捕获对称和学说中的完整性约束错误



我有两个表,它们是:类别:

|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 |

我使用原则:生成模块后端类别类别,我有一个列表类别与executeEdit,更新等。如果我删除类别id 3 - namethree,那么我得到以下错误

SQLSTATE[23000]: Integrity constraint violation: 1451更新父行:外键约束失败。

我如何确保如果我删除类别3,那么类别3的所有新闻都移动到类别2,例如没有错误?怎么才能抓到这个?

您必须为News配置表模式以处理ON DELETE的外键更改:要么"set to null",要么"set to default",要么"set to specific value",要么"delete"。虽然不确定是否可以在变量中做到这一点,但是如果您考虑一下,这将是疯狂的:您具有引用完整性正是因为您希望严格执行您的关系。如果你删除一个类别行,随机改变它们将完全违背这一点。

最好先将要修改的行UPDATE正确地处理。

UPDATE News SET id_cat = 2 WHERE id_cat = 3;
DELETE FROM Category WHERE id = 3;

(我不知道合适的Symfony/Doctrine方法来影响这个)

可用选项取决于您的数据库。您总是可以使用ON DELETE CASCADE删除所有相关行;

相关内容

  • 没有找到相关文章

最新更新