SQL触发器 急!

来源:百度知道 编辑:UC知道 时间:2024/06/14 21:15:16
我有个 歌曲表 主键是歌曲编号 其他键有歌名,歌曲类别,歌曲长度,发行地,歌手编号
现在想写个触发器 当歌名,歌曲类别,歌曲长度,发行地,歌手编号都相同(歌曲编号不同)时,能阻止插入和更新
请问该怎么写 我是这么写的 不过好象不行
create trigger 歌曲约束 on 歌曲表
for insert,update
as
begin
if ( (select 歌名,歌曲类别,歌曲长度,发行地,歌手编号 from inserted ins) in (select 歌名,歌曲类别,歌曲长度,发行地,歌手编号 from 歌曲表) )
begin
print '该歌曲应该已存在'
rollback
end
end
失误了 没加开头和结尾 问题解决
不过我表里的属性 发行年和发行年是允许空值的 我测试了下 好象因为这个的关系 碰到是发行年默认null值的信息 还是能重复插入 不知道是为什么

if exists(select 1 from 歌曲表 x join inserted y on x.歌名=y.歌名 and x.歌曲类别=y.歌曲类别 and x.歌曲长度=y.歌曲长度 and x.发行地=y.发行地 and x.歌手编号=y.歌手编号 and x.歌曲编号<>y.歌曲编号)
begin
raiserror('该歌曲应该已存在',16,10)
rollback
end