我想在现有表上应用ON DELETE约束。为此我使用此查询:
mysql> alter table table_product_varients add constraint fk_test foreign key (product_id) references table_products (product_id) on delete cascade ;
收到此错误:
错误1452(23000):无法添加或更新子行:外键约束f 苦恼的。
我理解这个错误是因为我没有table_products中的product_id,但table_product_varients有这些product_ids的变量。
我可以通过设置
来应用ON DELETE约束SET FOREIGN_KEY_CHECKS=0
这将应用ON DELETE约束,但在子表中不会被删除,因为父表中没有product_id(table_products)
如何应用ON DELETE约束并删除子表中的变量而没有父可用?
答案 0 :(得分:1)
您必须清理表table_product_varients
以获取无效引用,然后您才能添加约束
DELETE FROM table_product_varients
WHERE product_id NOT IN (SELECT product_id FROM table_products);
答案 1 :(得分:0)
//这样会在没有父母的情况下删除你的孩子
DELETE FROM TABLE_PRODUCTS
WHERE PRODUCT_VARIENT_ID NOT IN (SELECT ID FROM TABLE_PRODUCT_VARIENTS);
//在您可以申请外国钥匙之后