概述
废话时最没用的,概念也没用,目的在于为初初初学者提供一个可以理解的东西。
首先了解,在触发器的使用中,两张最重要的表:inserted和deleted。看名字理解意义,他们在你创建表后就有。
然后是instead of ,他将否定掉你写的任何语句对应语句,例如你写的是instead of insert,那么就将你的所有insert语句废除。
这个时候,你像增加的内容就是保存在inserted表中,该表中只有最新的一条记录。
现在让我们来用例子增加知识:
首先我们得有一个表:
create table hospson(
Pno char(15) constraint pri_pno primary key,
Pna char(10) constraint not_pna not null,
Pse char(2) constraint che_pse check(Pse='男' or Pse='女'),
Pph varchar(16) constraint not_pph not null
);
如果你已经学到触发器,那么是能看的懂得。如果看不懂,知道Pno在数据插入中不能为空且不能重复已经有的数据就好。
create trigger ins_hospson
on hospson instead of insert
as
begin
declare @pno1 char(15)
declare @pno2 char(15)
select @pno1=inserted.Pno from inserted
select @pno2=Pno from hospson
where exists (
select * from inserted);
if @pno1<>@pno2
begin
insert into hospson select * from inserted;
end
end
上面得建表也是让你看建触发器时不那么懵。为了看起来不那么复杂,方便理解,所以分开将语句分开写了。
declare 定义变量这个没问题。我们得目的是让插入相同pno时忽略而不是报错。
@pno2得结果:如果hospson表中有插入数据,那么@pno2=@pno1,否则为空。
所以通过两个变量提取到的数据,如果相等,我们就不做操作,如果不相等,我们就将inserted表中的数据插入。
测试:在测试之前我已经插了3条进去。
给两条相同的数据:让后给出结果:
最后
以上就是深情芝麻为你收集整理的数据库:SQL的instead of触发器(1)的全部内容,希望文章能够帮你解决数据库:SQL的instead of触发器(1)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复