/*
触发器的使用:有三种 insert,update ,delete
触发器执行时机:上述操作时
举例:当在学生表中插入一条记录时,默认地也在loginAccount中插入(生成)一条该生
的登陆帐号,这种情形,可以用insert触发器来实现。
在使用触发器的过程中会牵涉到两个临时表: inserted,updated表.
inserted表 deleted表
insert触发器前: 新记录 空
insert触发器后: 刚插入的记录 空
update触发器前: 空 空
update触发器后: 旧记录 新纪录
delete触发器前: 空 被删除的纪录
*/
SELECT [stuId]
,[stuName]
FROM [dbDemo].[dbo].[student]
/*创建一个 表,当在学生表中插入一条记录后,该表也应增加一条关于该学生的登录帐号*/
create table loginAccount
(
loginId int primary key foreign key references student(stuId),
loginPwd nvarchar(20) not null
)
/*创建一个触发器 用于完成上述业务*/
CREATE TRIGGER setAccount
on student //对student表设置触发器
after insert //该触发器是insert触发器,且是insert后执行
as
declare @loginid int //声明一个变量
/*从inserted临时表中得到Id号,并赋给变量 */
select @loginid= stuid from inserted
/*插入记录到loginAccount表中*/
INSERT INTO loginAccount values(@loginid,'student')
insert into student values(1006,'trigger2')
select * from loginAccount