SQL触发器Trigger

  1. Create table Employee_Test(
  2. Emp_ID int Identity,
  3. Emp_name varchar(100),
  4. Emp_sal Decimal(10,2)
  5. )
  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)

时间: 2024-10-09 10:53:01

SQL触发器Trigger的相关文章

SQL触发器实例(下)

1 基本语法: 2 Create Trigger [TriggerName] 3 ON [TableName] 4 FOR [Insert][,Delete][,Update] 5 AS 6 --触发器要执行的操作语句. 7 Go 8 9 注意: 10 触发器中不允许以下 Transact-SQL 语句: 11 Alter DATABASE ,Create DATABASE,DISK INIT, 12 DISK RESIZE, Drop DATABASE, LOAD DATABASE, 13 L

SQL触发器学习

? 简介 触发器是一种特殊类型的存储过程.触发器分为: DML( 数据操纵语言 Data Manipulation Language)触发器:数据库中表或视图的数据更改时触发,包括insert,update,delete语句 DDL(数据定义语言 Data Definition Language)触发器:表或索引中的create.alter.drop语句. 登陆触发器:是指当用户登录SQL SERVER实例建立会话时触发. ? 优劣 可以强制执行业务规则: Microsoft SQL Serve

SQL触发器实例讲解

定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.       常见的触发器有三种:分别应用于Insert , Update , Delete 事件. 我为什么要使用触发器?比如,这么两个表: Create Table Student(              --学生表         StudentID int primary key,       --学号         ....        )

mysql之触发器trigger

mysql之触发器trigger 触发器(trigger):监视某种情况,并触发某种操作. 触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 语法: create trigger triggerName after/before insert/update/delete on 表名 for each row   #这句话在mysql是固定的

MySQL触发器trigger

触发器(trigger):监视某种情况,并触发某种操作,触发器必须有名字,最多64个字符,可能后面会附有分隔符. 它和MySQL中其他对象的命名方式基本相象 触发器创建语法四要素:1.监视地点(table) 2.监视事件DML 3.触发时间(after/before) 4.触发事件DML { BEFORE | AFTER }  --触发器有执行的时间设置:可以设置为事件发生前或后. { INSERT | UPDATE | DELETE }  --同样也能设定触发的事件:它们可以在执行insert

创建SQL触发器

我们可以对某个数据表添加SQL触发器,当该表进行添加.更新.删除时执行某项操作.不过SQL触发器如果能不用尽量不用,若在项目后期改动程序波及范围太大,使用SQL触发器可以避免,所以才使用. 数据表dbo.User(UserName, Password) CREATE TRIGGER Trigger_User ON dbo.User FOR UPDATE, DELETE AS IF UPDATE(UserName) BEGIN DECLARE @userNameBeforeUpdate NVARC

【PLSQL】触发器trigger类型,状态,參数

************************************************************************   ****原文:blog.csdn.net/clark_xu 徐长亮的专栏 ************************************************************************ 触发器trigger 希望在做DML操作时.不须要要提供主键值.系统自己主动生成 DML触发器的组成由四部分: 组成部分: 1. 

【牛腩视频】之SQL触发器

之前在学习机房管理系统.net版的时候,已经写过了关于数据库的操作,但是现在开始学习牛腩,才发现之前自己理解的太浅显,很多东西看似好像会了,不去实际操作一下,不把代码从头到尾敲出来,到头来还是不会,所以,这篇文章就是总结如何从头到尾,创建一个sql触发器的教程.以下均以sql2008r2为例: 第一步:创建触发器 找到自己要创建触发器的表-触发器-新建触发器. 第二步:填写所需要信息 点击新建触发器以后,就会出现数据库为我们创建的一些初始化的代码,如下: 我们需要写的地方就是从CREATE TR

MySQL触发器 trigger学习

触发器:一类特殊的事物.可监视某种数据操作,并触发相关操作(insert/update/delete).表中的某些数据改变,希望同一时候能够引起其他相关数据改变的需求. 作用:变化自己主动完毕某些语句查询,加入程序的灵活性. 创建触发器语法: #delimiter $$  //默认情况下.delimiter是分号";",sql语句带有;号结尾会报错,没到end就算到结束了,使用delimiter $$作用就是告诉mysql语句的结尾换成以$结束,对应使用end$$结束 create t