概述
触发器的概念很容易理解,可以简单地看成 事件-条件-动作规则。即特定的事件发生并满足条件,就执行动作,否则啥也不干。
但是触发器的写法不同的书却有很大区别,并且有些在SQL server 2008 R2上并不能执行,这里记录一种 insert / update / delete 触发器。
创建一个商品表GOODS,eg:
CREATE TABLE GOODS(
Gno char(4) PRIMARY KEY,
Gname char(10),
Price int);
1. INSERT触发器
为表GOODS建立一个INSERT触发器,当插入商品的价格高于9999时,拒绝插入(回滚,撤销插入事务)
向目标表中插入数据时,会触发该表的Insert 触发器,系统自动在内存中创建inserted表,存放要(已 ,取决于after/before)插入的数据。
CREATE TRIGGER TRI_INSERT ON GOODS
AFTER INSERT
AS
BEGIN
Declare @pri int;
Select @pri=Price From inserted
IF(@pri > 9999)
Begin
print('太贵了,价格应小于9999')
rollback
END
END
测试触发器:
INSERT INTO GOODS
VALUES('1','大白菜','3')
成功执行;
INSERT INTO GOODS
VALUES('2','菲力牛排','19999')
拒绝插入(插入事务被撤销)
2. Update触发器
在目标表中更新数据时,会触发该表的Update 触发器,系统自动在内存中创建deleted表和inserted表,deleted表存放的是更新前的数据,inserted表存放的是更新后的数据。
CREATE TRIGGER TRI_UPDATE ON GOODS
AFTER UPDATE
AS
BEGIN
Declare @pri int;
Select @pri=Price From inserted
IF(@pri > 9999)
Begin
print('太贵了,价格应小于9999')
rollback
END
ELSE
Begin
Select *
From deleted
Select *
From inserted
END
END
测试:
UPDATE GOODS
SET Price = 6
WHERE Gname = '大白菜'
3. Delete触发器
从目标表中删除数据时,会触发该表的Delete 触发器,系统自动在内存中创建deleted表,存放删除的数据。
Create TRIGGER TRI_DELETE ON GOODS
AFTER DELETE
AS
BEGIN
print('删了就删了吧~')
END
4. 混合触发器
以逗号隔开
CREATE TRIGGER TRI_UPDATE ON GOODS
AFTER UPDATE,INSERT
顺便留下while的用法:
declare @i int
set @i=1
while @i<50
begin
insert into test (Cno,Cname) values(@i,'DcM')
set @i=@i+1
end
最后
以上就是魁梧玫瑰为你收集整理的SQL Server触发器的写法的全部内容,希望文章能够帮你解决SQL Server触发器的写法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复