在删除触发器删除另一个表中的条目之前
问题描述:
我正在创建一个用于赋值的留言板系统,并且我在某些SQL中遇到了一些问题。使用Oracle 11g。在删除触发器删除另一个表中的条目之前
我有一个表称为线程,并且当一个线程被删除时,我想删除所有与该线程相关的帖子,所以我想我会使用一个之前的删除触发器,但我不是很有经验的SQL。谁能帮我吗?
到目前为止,我已经得到了什么:
CREATE OR REPLACE TRIGGER DELETE_POSTS
BEFORE DELETE ON THREADS
FOR EACH ROW
BEGIN
DELETE FROM POSTS
WHERE POSTS.THREAD_ID = :OLD.ID
END;
我已经试过:NEW和其他一些东西。任何帮助表示赞赏。
答
除非您的分配明确需要触发器,否则使用外键约束执行级联删除会更合理。
SQL> create table threads(
2 thread_id number primary key
3 );
Table created.
SQL> create table posts(
2 post_id number primary key,
3 thread_id number references threads(thread_id) on delete cascade
4 );
Table created.
这样的话,当你从threads
表中删除特定行,在posts
表中的所有子行会自动被删除也是如此。
那么当你通过删除一条记录来触发这个触发器时发生了什么 - 或者没有发生? – APC 2013-04-21 21:14:45