问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

什么是触发器?SQL中的哪几种操作会触发触发器?

发布网友 发布时间:2022-04-08 11:06

我来回答

4个回答

懂视网 时间:2022-04-08 15:27

table Employee_Test(
  • Emp_ID int Identity,
  • Emp_name varchar(100),
  • Emp_sal Decimal(10,2)
  • )
    1. create table Employee_Test_Audit(
    2. Emp_ID int,
    3. Emp_name varchar(100),
    4. Emp_sal Decimal(10,2),
    5. Audit_Action varchar(100),
    6. Audit_Timestamp datetime
    7. )
    After Inset Trigger
    1. CREATE TRIGGER trgAfterInsert ON [dbo].[Employee_Test]
    2. FOR INSERT
    3. AS
    4. declare @empid int;
    5. declare @empname varchar(100);
    6. declare @empsal decimal(10,2);
    7. declare @audit_action varchar(100);
    8. select @empid=i.Emp_ID from inserted i;
    9. select @empname=i.Emp_Name from inserted i;
    10. select @empsal=i.Emp_Sal from inserted i;
    11. set @audit_action=‘Inserted Record -- After Insert Trigger.‘;
    12. insert into Employee_Test_Audit
    13. (Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)
    14. values(@empid,@empname,@empsal,@audit_action,getdate());
    15. PRINT ‘AFTER INSERT trigger fired.‘
    16. GO
    1. CREATE TRIGGER trgAfterUpdate ON [dbo].[Employee_Test]
    2. FOR UPDATE
    3. AS
    4. declare @empid int;
    5. declare @empname varchar(100);
    6. declare @empsal decimal(10,2);
    7. declare @audit_action varchar(100);
    8. select @empid=i.Emp_ID from inserted i;
    9. select @empname=i.Emp_Name from inserted i;
    10. select @empsal=i.Emp_Sal from inserted i;
    11. if update(Emp_Name)
    12. set @audit_action=‘Updated Record -- After Update Trigger.‘;
    13. if update(Emp_Sal)
    14. set @audit_action=‘Updated Record -- After Update Trigger.‘;
    15. insert into Employee_Test_Audit(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)
    16. values(@empid,@empname,@empsal,@audit_action,getdate());
    17. PRINT ‘AFTER UPDATE Trigger fired.‘
    18. GO
    1. CREATE TRIGGER trgAfterDelete ON [dbo].[Employee_Test]
    2. AFTER DELETE
    3. AS
    4. declare @empid int;
    5. declare @empname varchar(100);
    6. declare @empsal decimal(10,2);
    7. declare @audit_action varchar(100);
    8. select @empid=d.Emp_ID from deleted d;
    9. select @empname=d.Emp_Name from deleted d;
    10. select @empsal=d.Emp_Sal from deleted d;
    11. set @audit_action=‘Deleted -- After Delete Trigger.‘;
    12. insert into Employee_Test_Audit
    13. (Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)
    14. values(@empid,@empname,@empsal,@audit_action,getdate());
    15. PRINT ‘AFTER DELETE TRIGGER fired.‘
    16. GO
    1. CREATE TRIGGER trgInsteadOfDelete ON [dbo].[Employee_Test]
    2. INSTEAD OF DELETE
    3. AS
    4. declare @emp_id int;
    5. declare @emp_name varchar(100);
    6. declare @emp_sal int;
    7. select @emp_id=d.Emp_ID from deleted d;
    8. select @emp_name=d.Emp_Name from deleted d;
    9. select @emp_sal=d.Emp_Sal from deleted d;
    10. BEGIN
    11. if(@emp_sal>1200)
    12. begin
    13. RAISERROR(‘Cannot delete where salary > 1200‘,16,1);
    14. ROLLBACK;
    15. end
    16. else
    17. begin
    18. delete from Employee_Test where Emp_ID=@emp_id;
    19. COMMIT;
    20. insert into Employee_Test_Audit(Emp_ID,Emp_Name,Emp_Sal,Audit_Action,Audit_Timestamp)
    21. values(@emp_id,@emp_name,@emp_sal,‘Deleted -- Instead Of Delete Trigger.‘,getdate());
    22. PRINT ‘Record Deleted -- Instead Of Delete Trigger.‘
    23. end
    24. END
    25. GO



    来自为知笔记(Wiz)

    SQL触发器Trigger

    标签:

    热心网友 时间:2022-04-08 12:35

    触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。

    热心网友 时间:2022-04-08 13:53

    触发器是用户定义在关系表上的一类由事件触发的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器。触发器类似于约束,但是比约束灵活,具有更强大的数据控制能力。

    热心网友 时间:2022-04-08 15:28

    前触发 你对表数据进行操作之前 做的事情
    后触发 你对表数据进行操作之后 做的事情
    对表数据的操作无非增 删 改(查询没有触发的)
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    水利水电工程单元工程施工质量验收评定标准——土石方工程(SL 631... 关于水利水电工程项目划分的规程有哪些?划分的越细越好,感谢大家的帮 ... 水利水电工程的单位工程包括哪些工程? 尖子生学案:生物高中选修3目录 U盘传了数据怎么删除电脑记录如何清除电脑上U盘使用记录 把u盘插电脑怎么删掉记忆如何删掉电脑上插过U盘的记录 win7清除u盘记录 如何清理win7电脑u盘痕迹如何清除电脑上U盘使用记录 麦当劳和华莱士的外卖电话是什么? 一文详解ISO/IEC20000信息技术服务管理体系认证好处、材料、流程 1993年取消粮票制度 期货的特点 社保是否可以在不同地方缴纳两次 一个月可以交两次社保吗,我上一家公司和 新公司一起交吗? 车一个月报了两次保险 两个公司在同一个月能给我重交保险吗? 保险是一个月交一次吗 社保一个月缴费两次,可退吗? 上海综合保险一个月内可以同时交两次吗? 个人社保一个月扣两次 医疗保险一个月交了两次算交二个月的吗 五险一金一个月交两次 养老保险可以当年缴纳两次吗? 社保可能一个月交双份吗 同一个月缴了两次社保 社保怎么一个月交两次 社保能一个月上两次吗 社保一个月重复缴纳吗 社保一个月能交两次费用吗 社保可以一个月交两次吗 1993年我国取消粮票实行了40年的什么宣告终结 哪一年我国取消粮票实行了40年的粮食统购统销制度宣告终结 投影仪主动式3D眼镜怎么用? 爱普生6300投影仪怎么连接3D眼镜? 武汉市粮票是那年取消的? 那一年废除的粮票油票 买投影仪时送了一个爱普生3D眼镜,但说明书是英语,这个要怎么用呀 普通投影仪如何观看3d电影,现在的3d电影是不是只有一种技术,一种眼镜 怎么用投影机放立体电影 关于3D投影仪和3D电子眼镜的问题! 我家的投影仪可以用红蓝眼镜看3D影片,但是用不了3D电子眼镜 普通投影仪能用主动式3D眼镜吗 电脑+投影+眼镜 怎么实现real 3D? 投影仪3D眼镜怎么开 电影院的3D眼镜可以在家用投影看吗 更新锁是什么? 液晶电视3d眼镜能不能用在投影机上 为什么我们需要在SQL Server里更新锁 sql server 2008 怎样添加更新锁 电脑连接投影仪播放3D电影需要带电视3D眼镜还是电脑3D眼镜 数据库中更新 x=x+1 需要加锁吗?