我有两张桌子: 分类:
|id | cat_name |
| 1 | nameone |
| 2 | nametwo |
| 3 | namethree |
新闻:
| id | id_cat | title |
| 1 | 1 | title1 |
| 2 | 2 | title2 |
| 3 | 3 | title3 |
| 4 | 3 | title4 |
| 5 | 3 | title5 |
我使用 doctrine:generate-module后端类别类别,我有一个列表类别 executeEdit ,更新等。如果我删除类别ID 3 - namethree然后我得到以下错误
SQLSTATE [23000]:完整性约束违规:1451无法删除或 更新父行:外键约束失败。
如何确保删除类别3,然后将所有类别3的新闻移至类别2,例如没有错误?怎么能抓到这个?
答案 0 :(得分:0)
您必须为News
配置表架构,以便使用ON DELETE
处理外键更改:“设置为null”或“设置为默认值”或“设置为特定值”,或“删除”。但是,不确定你是否可以做到这一点,但是如果你认为这是疯狂的:你有正确的参考完整性,因为你希望你的关系得到严格执行。如果删除类别行,随机更改它们将与此完全相反。
很多通过首先UPDATE
要修改的行来更好地自行处理。
UPDATE News SET id_cat = 2 WHERE id_cat = 3;
DELETE FROM Category WHERE id = 3;
(我不知道适当的Symfony / Doctrine方法会影响这个。)
您的可用选项取决于您的数据库。您可以随时说ON DELETE CASCADE
到删除所有相关行;您可能有或没有其他选择。