【发布时间】:2014-03-20 06:10:47
【问题描述】:
我有以下表格:
表 1
| id | nr | name | ...
表2
| id | nr | prod | ...
表3
| id | nr | prod | act | data | publ | ...
产品
| id | id_prod | prod | name | ...
TABLE2.nr FOREIGN KEY TABLE1.nr DELETE RESTRICT UPDATE CASCADE
TABLE3.nr FOREIGN KEY TABLE1.nr DELETE RESTRICT UPDATE CASCADE
TABLE2.prod FOREIGN KEY PROD.id_prod DELETE RESTRICT UPDATE CASCADE
TABLE3.prod FOREIGN KEY TABLE2.prod DELETE RESTRICT UPDATE CASCADE
问题在TABLE2和TABLE3之间
假设我有
表2
| id | nr | prod | ...
1 301 1001
2 301 1005
3 301 2098
4 305 1005
5 305 2099
表3
| id | nr | prod | act | data | publ | ...
1 301 1005 1 ... ... ...
2 301 1001 NULL ... ... ...
3 305 2099 1 ... ... ...
4 305 2098 1 ... ... ...
现在假设我想DELETE FROM TABLE2 WHERE id = 4。
Mysql 返回错误,因为 TABLE2.prod 和 TABLE3.prod 之间存在 FOREIGN KEY。
但实际上,我并没有用nr = 301 接触对象的数据,它在TABLE3 中也有一个条目301 1005。
我该如何解决这个问题?是否可以在 2 列之间添加 FOREIGN KEY?
我想防止从 TABLE2 中删除 TABLE3 中存在的数据,但比较列 nr AND prod 不仅是 nr OR prod(现在我遇到了 prod 的问题)。
谢谢!
【问题讨论】:
标签: mysql foreign-keys