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值的信息 还是能重复插入 不知道是为什么
现在想写个触发器 当歌名,歌曲类别,歌曲长度,发行地,歌手编号都相同(歌曲编号不同)时,能阻止插入和更新
请问该怎么写 我是这么写的 不过好象不行
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