2013-07-07 139 views
0
+--------+--------+ 
    |A_id |A_desc | 
    +--------+--------+ 

    table B: 
    +--------+--------+ 
    |B_id |B_desc | 
    +--------+--------+ 

    table c: 
    +--------+--------+ 
    |A_id |B_id | 
    +--------+--------+ 

我想通过获取“B_id”的值来删除c表中的1行和b表中的1行而不删除表a,任何人都可以解决这个问题?SQL删除外键

+0

您正在使用哪种RDBMS?为什么表'A'正在修改?有没有触发器? – alzaimar

+0

表A不依赖任何其他表;因此,除非您的团队设置了某种触发器,否则您应该可以从表B和C中删除,而不会有任何问题。 – Tom

回答

1

你只能用触发器/扭动一些其他代码来做到这一点。

请注意,即使你使用触发器/代码,你可能会得到一个例外,因为在C以外的记录可以指向表B.

你可以做的是运行类似:

delete from B where B_id not in (select B_id from C) 

运行删除后

+0

解决了“删除级联”谢谢大家 – al1991