这是我创建表格的方式:
CREATE TABLE TABLE_A(
id uuid NOT NULL, UNIQUE
name text
);
CREATE TABLE TABLE_B(
id uuid NOT NULL, UNIQUE
name text
);
-- custom realization of many-to-many association
CREATE TABLE TABLE_A_B(
id uuid NOT NULL, UNIQUE
a_id uuid REFERENCES TABLE_A(id) ON UPDATE CASCADE,
B_id uuid REFERENCES TABLE_B(id) ON UPDATE CASCADE
);
我已经创建了表格,现在无法通过添加DELETE CASCADE对其进行更新。现在,我需要将ON DELETE CASCADE添加到登台表TABLE_A_B。怎么做 ?(
您使用ON DELETE CASCADE
:
CREATE TABLE TABLE_A_B(
id uuid NOT NULL UNIQUE,
a_id uuid REFERENCES TABLE_A(id) ON UPDATE CASCADE ON DELETE CASCADE,
B_id uuid REFERENCES TABLE_B(id) ON UPDATE CASCADE ON DELETE CASCADE
);
这是一个db <> fiddle,它修复了代码中的某些拼写错误。
特别是,外键引用应该是主键。尽管允许使用唯一键,但主键的目的实际上是标识单个行-一种主要用途是外键引用。
编辑:
如果约束已经存在,请执行以下操作。
首先,获取他们的名字:
select *
from information_schema.table_constraints
where constraint_type = 'FOREIGN KEY' and table_name = 'table_a_b';
注意:您可以分配名称以跳过此步骤。
然后删除现有的外键约束:
alter table table_a_b
drop constraint table_a_b_a_id_fkey;
最后,添加一个新的:
alter table table_a_b
add constraint fk_table_a_b_a
foreign key (a_id) references table_a(id)
on update cascade
on delete cascade;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句