SQL server从入门精通----触发器
-----触发器------------------- ---触发器:是一种特殊的存储过程,是在某个操作发生自动执行的一个操作 select * from Q_user --------------insert 触发器-------------- if(OBJECT_ID('tr_insert','tr')) is not null drop trigger tr_insert create trigger tr_insert on Q_user --基于哪个表创建的触发器(就是哪个表在发生插入操作时自动触发) for insert --做什么操作时什么时候自动发生 --操作upate insert delete --什么时候 for 正在操作时发生, after 操作之后时发生,instead of 废除当前的操作,执行触发的操作 as --在插Q_user时,同时,插入userInformation -- declare @uid varchar(30),@uName varchar(30) --select @uid=uid,@uName=uName from inserted ----获取 刚刚操作之后生成对应的行 ----(insert 代表触发的基于表) --insert into userInformation(uid,name) values(@uid,@uName) ----也可以insert select 语句 insert into userInformation(uid,name) select uid,uName from inserted go --test insert into Q_user(uName,uPwd) values('触发器','11111') select * from userInformation ----测试成功 ------update触发器-------------- 在跟新Q_user标的同事跟新userInformation的 部分字段 create trigger tr_update on Q_user after update as declare @uid varchar(30),@name varchar(30) select @uid=uid,@name=uName from inserted --获取 刚刚操作之后生成对应的行 update userInformation set name=@name where uid=@uid go update Q_user set uName='更新触发器' where uName='触发器' select * from userInformation ----delete触发器--------- 因为userInformation里面的uid 是Q_user里面的外键,在不使用级联删除的时候报错 delete Q_user where uId='10002' --DELETE 语句与 REFERENCE 约束"DF_uid"冲突。该冲突发生于数据库"Qzone",表"dbo.userInformation", column 'uid' --级联 就是当一个表和另一个表存在外键的关系时 就可以使用级联更新与删除了 --但前提是此表设置了级联 --设置级联的方法 创建级联更新,, 在外键语句后面加 ON DELETE CASCADE ON UPDATE NO CASCADE, --foreign key (userId) references UserInfo(UserId) on delete cascade update Q_user set uName='级联更新' where uName='更新触发器' select * from Q_user ; select * from userInformation 用触发器实现级联删除 ---游标--------- ---是处理数据的一种方法,可以查看或者处理结果集中的数据 --利用游标来查询指定区间的数据 (比如查询10-40直接的数据包含10-40) print (4.5)