首页 > 数据库 >详细分析SQL Server触发器的基本知识

详细分析SQL Server触发器的基本知识

时间:2024-08-15 12:55:06浏览次数:14  
标签:触发器 object OBJECT Server sys SQL id SELECT

目录

前言

原先写过一篇类似的,不过是基于Mysql:添加链接描述

对应Sql Server的补充知识点:详细配置SQL Server的链接服务器(图文操作Mysql数据库)

1. 基本知识

基本知识其实差不多,先从CRUD开始

触发器的类型:

  • DML触发器:在对表进行插入、更新或删除操作时触发
    AFTER触发器:在操作完成后执行
    INSTEAD OF触发器:代替操作执行,操作本身不会发生
  • DDL触发器:在对数据库对象进行创建、修改或删除时触发
  • LOGON触发器:在用户登录到数据库时触发

触发器的作用

  • 数据验证:在数据修改前或后执行额外的验证逻辑
  • 审计记录:记录数据的变更历史
  • 自动计算:基于表中的数据自动计算其他值

2. Demo

创建触发器:

CREATE TRIGGER trigger_name
ON table_name
[AFTER | INSTEAD OF] {INSERT | UPDATE | DELETE}
AS
BEGIN
    -- 触发器逻辑
END;

增加触发器:

CREATE TRIGGER trg_AfterInsert
ON Employees
AFTER INSERT
AS
BEGIN
    INSERT INTO AuditLog (Action, LogDate, EmployeeID)
    SELECT 'INSERT', GETDATE(), EmployeeID
    FROM inserted;
END;

更新触发器:

CREATE TRIGGER trg_InsteadOfUpdate
ON Employees
INSTEAD OF UPDATE
AS
BEGIN
    -- 执行自定义的更新逻辑
    UPDATE Employees
    SET Name = inserted.Name
    FROM inserted
    WHERE Employees.EmployeeID = inserted.EmployeeID;
END;

查看触发器:

SELECT * 
FROM sys.triggers 
WHERE parent_id = OBJECT_ID('table_name');

删除触发器:

DROP TRIGGER trigger_name;

3. 查找特定表的存储过程

  • 查询当前数据库中的所有存储过程
SELECT name 
FROM sys.procedures;

在这里插入图片描述

  • 通过表名查询触发器:

使用sys.sql_modules视图和OBJECT_DEFINITION函数

SELECT OBJECT_NAME(object_id) AS ProcedureName
FROM sys.sql_modules
WHERE OBJECT_DEFINITION(object_id) LIKE '%YourTableName%';

在这里插入图片描述

多加一个字段属性,可以给出详细的存储过程的定义

SELECT 
    OBJECT_NAME(m.object_id) AS ProcedureName,
    m.definition AS ProcedureDefinition
FROM 
    sys.sql_modules m
WHERE 
    OBJECT_DEFINITION(m.object_id) LIKE '%ags.GateReservationDetail%';

在这里插入图片描述

  • 通过触发器名称查询:
    如果有多个名称,都可在in后面进行添加补充
SELECT 
    OBJECT_NAME(m.object_id) AS ProcedureName,
    m.definition AS ProcedureDefinition
FROM 
    sys.sql_modules m
WHERE 
    OBJECT_NAME(m.object_id) IN ('View_JobOwner');

在这里插入图片描述

标签:触发器,object,OBJECT,Server,sys,SQL,id,SELECT
From: https://blog.csdn.net/weixin_47872288/article/details/140033760

相关文章

  • Flutter项目移动端SQLite升级指南:解决json_extract函数缺失问题
    引言在Flutter移动端项目中依赖于SQLite的高级功能(如json_extract),在低版本的Android系统上部署时,可能会遇到函数不支持的问题。本文将指导你如何通过升级项目中使用的SQLite版本来解决这一问题。前置条件Flutter项目使用sqflite:^2.3.3+1进行SQLite数据库操作。IMBoyA......
  • 增量生成器简化BlazorServer兼容BlazorAuto模式
    本文简略介绍一下如何使用增量生成器(IncrementalGenerator)简化BlazorServer兼容Auto模式比如现在有一个BlazorServer项目的Razor页面//UserIndex.razor@code{[Inject,NotNull]IUserService?Service{get;set;}}如果IUserService的实现不支持运行在WebAssemb......
  • docker 安装 mysql
    docker安装MySQL命令软件的共享目录统一在 /mydata 目录下安装mysql5.7版本 #docker拉取镜像命令dockerpullmysql:5.7#宿主机新建目录mkdir-p/mydata/mysql/conf/#启动一个临时的mysql容器dockerrun-p3306:3306--namemysql-eMYSQL_ROOT_PASSWORD=root......
  • 基于SpringBoot+MySQL+SSM+Vue.js的药房药品采购系统(附论文)
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的药房药品采购系统(附论文......
  • 基于SpringBoot+MySQL+SSM+Vue.js的旅游咨询系统
    获取见最下方名片获取见最下方名片获取见最下方名片演示视频技术描述开发工具:Idea/Eclipse数据库:MySQLJar包仓库:Maven前端框架:Vue/ElementUI后端框架:Spring+SpringMVC+Mybatis+SpringBoot文字描述基于SpringBoot+MySQL+SSM+Vue.js的旅游咨询系统,用户,管理......
  • fastapi 使用sqlalchemy
    一、简介fastapi常见的orm框架有以下几种:SQLAlchemy:这个比较常见,之前用flask开发web框架也用的SQLAlchemy。SQLModel:网上说是最适合fastapi的orm框架,官方也推荐这个,后续应该会发展不错,目前没有去踩坑。tortoise-orm:django的异步orm框架,与fastapi也兼容,没用过不做评价。 ......
  • MySQL(DQL)
    一,SQL语言分类(1)数据查询语言(DQL:DataQueryLanguage)其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。关键字SELECT是DQL(也是所有SQL)用得最多的动词。SELECTFROMWHEREORDERBYHAVING (2)数据操作语言(DML:DataManipulationLanguage)其语......
  • 如何解决MySQL主从复制延时问题
    MySQL主从复制是面试中不可避开的重要一环,里面的知识点虽然基础,但是能回答全的同学不多,今天我们再来老生常谈一下。本文全文内容如下。  1.MySQL主从1.1什么是MySQL主从?MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL......
  • java语言,MySQL数据库;电影推荐网站 30760(免费领源码)计算机毕业设计项目推荐万套实战教
    摘 要随着互联网时代的到来,同时计算机网络技术高速发展,网络管理运用也变得越来越广泛。因此,建立一个B/S结构的电影推荐网站;电影推荐网站的管理工作系统化、规范化,也会提高平台形象,提高管理效率。本电影推荐网站是针对目前电影推荐网站的实际需求,从实际工作出发,对过去的电影......
  • java语言,MySQL数据库;基于Web的高校知识共享系统设计与实现 32050(免费领源码)计算机毕业
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对高校知识共享系统等问题,对高校知识共享系统进行研究分析,然后开发设计出高校知识共享系统以......