SQL 触发器 应用
发布网友
发布时间:2022-04-24 01:43
我来回答
共2个回答
热心网友
时间:2022-05-01 19:41
写触发器当然会用到这两个表,它们存放的是你刚刚进行操作后的数据,可以根据临时表里的数据来编写将要触发的动作
比如删除表中id=1的数据时触发,判断deleted里是否存在id=1,如果存在,则print‘不能删除id=1的记录’,回滚。这样就可以保证id=1这条记录永远不会被误删
热心网友
时间:2022-05-01 20:59
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 insert
as
begin
declare @age int
declare @count int
select @age = age from inserted --触发程序自动更新相同年纪的数量。此行为需使用inserted表中的age字段
set @count = (select count(*) from insert_count where age = @age)
if @count > 0
begin
update insert_count set [count] = [count] + 1 where age = @age
end
else
begin
insert into insert_count values(@age,1)
end
end