2011-09-07 267 views
0

我有一个相当简单的问题。 我需要创建删除触发器。删除触发器SQL 2005

我有三个表,Main和T1和T2。 T1和T2连接到Main,使用相同的ID字段,所以我已经有插入式触发器,但效果很好,但我需要删除触发器,它将从主表中删除T1和T2时删除记录。

任何帮助?

+0

你有没有考虑一个带有“ON DELETE CASCADE”的外键? –

+0

是的,我删除了强制执行外部关键控制点,并删除了检查现有数据。 – Tony

+0

@Tony:为什么要删除“检查现有数据”?这与CASCADE DELETE – gbn

回答

0

删除触发器将在DELETE运行后触发。但是,DELETE将因外键错误而失败(您有FK,对吗?)。

选项:

  • 存储过程删除T2,T1然后主要在事务
  • 设置FKS具有cascading delete
  • 相反触发(之前删除该触发),这是有效地等一个存储过程
+0

嗨我尝试了级联功能,但它不会允许它,因为它是来自两个表的相同ID,它不是唯一的 – Tony

+0

托尼:不明白你的意思:如果父行不是唯一的,你怎么知道哪一行删除? – gbn

+0

所有三个表都有相同的ID,这就是为什么我无法使用级联,连接:主要到T1和主要到T2,同一个字段 – Tony