create trigger sname_ssex on student
INSTEAD OF insert,update
--drop trigger sname_ssex
as
if exists (select 1 from student a,inserted b where a.sname=b.sname and a.ssex=b.ssex)
begin
raiserror('违背FD:sname ->ssex!',16,1)
rollback transaction
end
INSTEAD OF insert,update
--drop trigger sname_ssex
as
if exists (select 1 from student a,inserted b where a.sname=b.sname and a.ssex=b.ssex)
begin
raiserror('违背FD:sname ->ssex!',16,1)
rollback transaction
end
if exists (select * from student a,inserted b where a.sname=b.sname and a.ssex=b.ssex)
begin
raiserror('违背FD:sname ->ssex!',16,1)
rollback transaction
end而且出发器每语句出发一次
drop trigger sname_ssex
go
Create trigger sname_ssex on student
for insert,update
as
if exists (select * from inserted a,student b --触发器改为
where a.sname=b.sname and a.ssex<>b.ssex)
begin
raiserror('违背FD:sname ->ssex!',16,1)
rollback transaction
end
for insert ,update
as
declare @sname varchar(20),
@ssex varchar(10),
@sno varchar(20)
select @sno=sno, @sname=sname,@ssex=ssex from insertedif exists (select * from student
where sname=@sname and ssex<>@ssex and sno<>@sno)
begin
raiserror('违背FD:sname ->ssex!',16,1)
rollback transaction
end
go
where sname=@sname and ssex<>@ssex and sno<>@sno)
for insert,update
as
if exists(
select a.sname from student a,inserted i
where a.sname=i.sname
group by a.sname
having count(distinct a.ssex)>1)
begin
raiserror('违背FD:sname ->ssex!',16,1)
rollback transaction
end
if exists (select 1 from student a,inserted b where a.sname=b.sname and a.ssex=b.ssex)
begin
raiserror('违背FD:sname ->ssex!',16,1)
rollback transaction
end而且出发器每语句出发一次