SQL 触发器 应用

来源:百度知道 编辑:UC知道 时间:2024/07/04 03:42:30
请问:SQL数据库中使用触发器时,必需要使用那两个临时表deleted和inserted吗?高手能否给几个触发器典型的实例,简单点哦

写触发器当然会用到这两个表,它们存放的是你刚刚进行操作后的数据,可以根据临时表里的数据来编写将要触发的动作
比如删除表中id=1的数据时触发,判断deleted里是否存在id=1,如果存在,则print‘不能删除id=1的记录’,回滚。这样就可以保证id=1这条记录永远不会被误删

create table student --建立student表
(student_name char(24) null,
age int null)
go
create table student_insert
(insert_count int NULL) --建立表student_insert。用于记录student表发生insert的次数
go
create table count_age --建立表count_age。用于统计student表中各个年龄学生的数量
(age int null,
[count] int not null)
go

create trigger insert_count on student
after insert
as
begin
DECLARE @a int
set @a = (select count(*) from student_insert) --触发程序自动更新student表插入动作的次数。此行为不需要用到inserted表
if @a >0
begin
update student_insert set insert_count = insert_count + 1
end
else
begin
insert student_insert values(1)
end
end

go
create trigger age_count on student
after inser