有关delete trigger的问题

crasy1984 2005-05-25 08:35:30
问题是我想要把学生这一表中的一行删除,同时选课表中相应的内容也要删除.
触发器的代码如下:
CREATE TRIGGER tri_delete ON 学生
FOR DELETE
AS
declare @tid int
select @tid =学生.学号 from 学生,deleted d where 学生.学号 = d.学号
if exists(select * from 选课表 where 选课表.学号 = @tid)
begin
delete from 选课表 where 学号= @tid
raiserror('dfdfdf',16,10)
end

这句raiserror('dfdfdf',16,10)我是想证明这个触发器有没有被触发,结果都没有显示dfdfdf
学生这一表中的记录删除了,但在选课表中相应记录没有删除
这是为什么?
请各位大虾看一下,谢谢了





...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tmdbcd0630 2005-05-25
  • 打赏
  • 举报
回复
问题出在楼主的触发器写法上。先deleted d where 学生.学号 = d.学号,当然就不会存在您的触发条件了。同意楼上朋友的改进。
WangZWang 2005-05-25
  • 打赏
  • 举报
回复
该为:

CREATE TRIGGER tri_delete ON 学生
FOR DELETE
AS
declare @tid int
select @tid =学号 from deleted
if exists(select * from 选课表 where 学号 = @tid)
begin
delete from 选课表 where 学号= @tid
Raiserror('dfdfdf',16,10)
end
kylike 2005-05-25
  • 打赏
  • 举报
回复
CREATE TRIGGER tri_delete ON 学生
FOR DELETE
AS
--declare @tid int
--select @tid =学生.学号 --- 学生表中的数据被删除了,还引用学生表中数据是没有的。
-- from 学生,deleted d where 学生.学号 = d.学号

if exists(select 1 from 选课表,deleted d where 选课表.学号 = d.学号)
begin
delete from 选课表 where 学号= @tid
raiserror('dfdfdf',16,10)
end

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧