具体分析SQL Server触发器的根本知识

打印 上一主题 下一主题

主题 553|帖子 553|积分 1659

前言

原先写过一篇类似的,不过是基于Mysql:添加链接描述
对应Sql Server的增补知识点:具体设置SQL Server的链接服务器(图文操纵Mysql数据库)
1. 根本知识

根本知识着实差不多,先从CRUD开始
触发器的范例:


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


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

创建触发器:
  1. CREATE TRIGGER trigger_name
  2. ON table_name
  3. [AFTER | INSTEAD OF] {INSERT | UPDATE | DELETE}
  4. AS
  5. BEGIN
  6.     -- 触发器逻辑
  7. END;
复制代码
增加触发器:
  1. CREATE TRIGGER trg_AfterInsert
  2. ON Employees
  3. AFTER INSERT
  4. AS
  5. BEGIN
  6.     INSERT INTO AuditLog (Action, LogDate, EmployeeID)
  7.     SELECT 'INSERT', GETDATE(), EmployeeID
  8.     FROM inserted;
  9. END;
复制代码
更新触发器:
  1. CREATE TRIGGER trg_InsteadOfUpdate
  2. ON Employees
  3. INSTEAD OF UPDATE
  4. AS
  5. BEGIN
  6.     -- 执行自定义的更新逻辑
  7.     UPDATE Employees
  8.     SET Name = inserted.Name
  9.     FROM inserted
  10.     WHERE Employees.EmployeeID = inserted.EmployeeID;
  11. END;
复制代码
检察触发器:
  1. SELECT *
  2. FROM sys.triggers
  3. WHERE parent_id = OBJECT_ID('table_name');
复制代码
删除触发器:
  1. DROP TRIGGER trigger_name;
复制代码
3. 查找特定表的存储过程



  • 查询当前数据库中的所有存储过程
  1. SELECT name
  2. FROM sys.procedures;
复制代码



  • 通过表名查询触发器:
使用sys.sql_modules视图和OBJECT_DEFINITION函数
  1. SELECT OBJECT_NAME(object_id) AS ProcedureName
  2. FROM sys.sql_modules
  3. WHERE OBJECT_DEFINITION(object_id) LIKE '%YourTableName%';
复制代码

多加一个字段属性,可以给出具体的存储过程的界说
  1. SELECT
  2.     OBJECT_NAME(m.object_id) AS ProcedureName,
  3.     m.definition AS ProcedureDefinition
  4. FROM
  5.     sys.sql_modules m
  6. WHERE
  7.     OBJECT_DEFINITION(m.object_id) LIKE '%ags.GateReservationDetail%';
复制代码



  • 通过触发器名称查询:
    假如有多个名称,都可在in后面进行添加增补
  1. SELECT
  2.     OBJECT_NAME(m.object_id) AS ProcedureName,
  3.     m.definition AS ProcedureDefinition
  4. FROM
  5.     sys.sql_modules m
  6. WHERE
  7.     OBJECT_NAME(m.object_id) IN ('View_JobOwner');
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表