我在表格中使用外键:
表A
-----------------------------------------
id | name | type | date
-----------------------------------------
1 |test.jpg |image/jpg| 2015-01-15
2 |test2.jpg|image/jpg| 2015-01-15
3 |test3.jpg|image/jpg| 2015-01-15
和表B
-----------------------------------------
id | title | file_id | date
-----------------------------------------
1 |News 1 |1 | 2015-01-15
2 |News 2 |2 | 2015-01-15
3 |News 3 |3 | 2015-01-15
这是表B 的外键:
CONSTRAINT `news_ibfk_1` FOREIGN KEY (`file_id`) REFERENCES `Table A` (`id`) ON UPDATE NO ACTION
现在一切正常,我想知道如果我从Table B
删除file_id
Table A
记录删除中的一条记录,有什么办法可以说明吗?
答案 0 :(得分:0)
所以我理解" TableA.id"是" TableB.file_id"的父级。
在这种情况下,你只能删除" TableA.id"没有孩子。来自" TableB.file_id"的值必须存在于" TableA.id"。
你可以做的是在" TableB"删除完成后激活。然后你可以查看值" TableB.file_id"从您删除的行仍然在" TableB.file_id"中使用。如果不是这种情况,那么删除你可以从" TableA"中删除它。
以下是有关触发器的链接:Triggers
我认为你需要在删除触发器"之后使用"。 像这样:
CREATE OR REPLACE TRIGGER trName
AFTER DELETE ON TableB
BEGIN
<look if any values from "TableA.id" are not used anymore in "TableB.file_id">
<if that is the case, do a DELETE on that "TableA.id" line>
END;
/