帮我写一个触发器

来源:百度知道 编辑:UC知道 时间:2024/05/30 06:14:10
表A中有两个字段CODE和CHANNELID
想写一个触发器,在添加或者修改的时候,不允许有CODE和CHANELID同时重复的
比如 CHANNELID=1 的记录里面不能有两个CODE一样的,但是CHANNELID不同的话,CODE可以相等
帮写个触发器或者约束,谢谢了
MSSQL2000 好几天没有来看了,我后来自己解决了,最后两位回答的朋友,以后养成仔细看看人家提问,好好想想,设置两主键我还用来问吗,不同CHANNELID下的CODE可以重复,相同CHANNELID下的CODE不可以重复,你两自己定义个双主键试试看!有好几位的回答都有点好像可以不过没有试试,尤其lazy67的我没有试,看代码应该是也没有问题的,因为我发来帖子那天就自己解决了,分给lazy67,下面附上我代码,最后两位好好看看,别以为别人都是笨蛋!
CREATE TRIGGER [TypeName] ON [dbo].[MovieType]
instead of insert
as
if exists(select 1
from MovieType a,inserted i
where (a.ChannelId = i.ChannelId and a.TypeCode = i.TypeCode)
)
RAISERROR ('相同ChannelId下的TypeCode不许重复!',16, 1)
else
insert into MovieType(TypeName,TypeCode,ChannelId) select TypeName,TypeCode,ChannelId from inserted

不知道channelid和code是什么类型,假设是int。

create trigger g on 表
after insert,update
as
declare @ch int,@code int
select @ch=channelid,@code=code from inserted
if exists(select * from 表 where channelid=@ch and code=@code)
rollback

s

create trigger DemoTrigger
on T
after insert
as
declare @count int
select @count = count(*) from T where a in(select a from inserted) and b in(select b from inserted)
if @count > 1
begin
rollback
end

create trigger tga on 表
AFTER INSERT,UPDATE
AS
DECLARE @CODE INT
,@CHANNELID INT
IF UPDATE(CHANNELID)
BEGIN
SELECT @CODE=CODE,@CHANNELID=CHANNELID
FROM inserted
IF @CHANNELID IN (SELECT CHANNELID FROM 表 WHERE CODE=@CODE)
BEGIN
ROLLBACK
END
END

为了两分 我降低了我回答的采纳率

为什么要写触发器。。
把CHANNELID 定义为主键 不就好了。。。有简单还好用
这样就是唯一了 你不会自己建主键都不会把。。。在设计器里设计表的时候定义下或者语句