我正在使用 mysql 数据库,我想引用复合键的一部分(其中包含 2 个字段),并避免 mysql 在引用条目被删除时删除引用条目,如果有高跷的一部分引用表中的复合键。
这是问题所在:
两张表:
- T1(Some_PK,#Pointer_To_PKA,some_field)
- T2( PKA , PKB , Some_field)
T2 有一个由两个字段PKA和PKB组成的复合密钥
- 在 T1 中有一个外键约束,它引用 T2 的字段PKA但不引用PKB(仅引用了复合键的一半)。
问题是,当我删除 T2 中的一行时,“ON CASCADE DELETE”约束删除了 T1 中的行,该行引用了 T2 中删除的行,但该行(来自 T1)在删除之前还引用了 T2 中的其他字段:
============= T2 =============
[PKA] | [PKB] | Some_field
------------------------------
1 | 1 | Some content
1 | 2 | abcdefgh
2 | 3 | zefhds
______________________________
==================== T1 ========================
[Some_PK] | #Pointer_To_PKA | Some_field
------------------------------------------------
A | 1 | Lorem ipsum
B | 2 | other content
C | 1 | dhtshfgnfn
________________________________________________
使用上面的示例,我希望当我从 T2 ( 1 , 1 , 'Some content') 中删除第一行时,从 T1 中删除第一行和第三行,因为 T2 中仍然会有一个条目(第二行),其中包含 T1 引用的复合键的一半。
有人知道如何处理吗?