我有2张桌子。
create table A
(
idA int primary key,
.
.
)
create table B
(
idA int,
idB int primary key,
.
.
Foreign key (idA) A (idA) ON DELETE CASCADE
)
create Table AB
(
idA int,
idB int,
.
.
Foreign key (idA) A (idA),
Foreign key (idB) B (idB)
)
该应用程序控制数据的方式是,在表AB 中,idA
和idB
中的任何一个都将其他设置为空。
如何强加这样的内容
Foreign key (idA) A (idA) ON DELETE CASCADE,
Foreign key (idB) B (idB) ON DELETE CASCADE,
或
Foreign key (idA) A (idA) ON DELETE CASCADE,
Foreign key (idB) B (idB) ON DELETE SET NULL,
或
Foreign key (idA) A (idA) ON DELETE SET NULL,
Foreign key (idB) B (idB) ON DELETE SET NULL,
在每种情况下我都会遇到错误:
SQL错误[1785] [S0000]:
在表'inventory_exception'上引入FOREIGN KEY约束'FK__inventory_except__2022C2A6'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。
答案 0 :(得分:0)
以下代码有效:
create table A (
idA int primary key
);
create table B (
idB int primary key
);
create Table AB (
idA int,
idB int,
check (idA is null and idB is not null or idA is not null and idB is null),
Foreign key (idA) A (idA) on delete cascade,
Foreign key (idB) B (idB) on delete cascade
);
Here是db <>小提琴。
您似乎还有其他导致问题的约束。如果是这样,则您的问题没有足够的信息来真正解释问题。