定义
重点学习DML触发器
DML触发器
分类
触发器工作原理
这两个表示系统在线生成的、动态驻留在内存中的临时表,是由系统管理的逻辑表。这两个表的结构总是与被该触发器作用的表的结构相同。对于这两个表,用户只有读取的权限,没有修改的权限。 这两个表的表结构与触发器所在数据表的结构是完全一致的。当触发器的工作完成之后,这两个表也将会从内存中删除
insert delect update触发器的工作原理
创建触发器
注意事项
代码例子
rollback为回滚操作 raiserror为抛出异常操作
已知Modify_amount表中包含以下字段:工程项目号、抢修物资号、操作时间、修改前的领取数量、修改后的领取数量。请建立该表,并创建一个触发器trg_Update_OutStock,实现以下应用:当修改Out_Stock表中的amount字段后,自动在数量变化表Modify_amount中增加一行记录。请修改Out_Stock表中某条记录的amount值进行验证观察。
创建表
create table Modify_amount(
prj_num char(8),
mat_num char(4),
get_date smalldatetime,
Before_amount tinyint,
After_amount tinyint,
primary key(prj_num,mat_num)
)
创建触发器
用到了update时,被更新的数据保存在deleted的幻表中,更新的数据保存在inserted的幻表中的知识.
create trigger trg_Update_OutStock
on Out_Stock
after update
as
begin
declare @n1 char(8)
select @n1=inserted.prj_num from inserted
declare @n2 char (4)
select @n2=inserted.mat_num from inserted
declare @n3 smalldatetime
select @n3=inserted.get_date from inserted
declare @n4 tinyint
select @n4=deleted.amount from deleted
declare @n5 tinyint
select @n5=inserted.amount from inserted
insert into Modify_amount(prj_num,mat_num,get_date,Before_amount,After_amount)
values (@n1,@n2,@n3,@n4,@n5)
end