我有一个简单的表格,如下所示。
create table chemlab.rule_header (
id serial PRIMARY KEY,
name varchar(50),
grade varchar(20),
class_tag varchar(20), --tag added to sammple if match
parent_id int REFERENCES chemlab.rule_header(id) DEFAULT NULL,
unique( grade, class_tag )
)
但是之后,我发现我需要添加
ON DELETE
操作,默认值为NO ACTION
。我不知道如何更改操作。现在我必须
DROP
和ADD
ALTER table chemlab.rule_header
DROP CONSTRAINT rule_header_parent_id_fkey ;
ALTER TABLE rule_header
ADD CONSTRAINT rule_header_parent_id_fkey
FOREIGN KEY (parent_id) REFERENCES chemlab.rule_header(id) ON DELETE RESTRICT;
那么,改变对外键约束的操作的正确语法是什么?
最佳答案
嗯,这不是直接改变FOREIGN KEY约束的方法,尽管这只是一个语句,但仍然存在DROP
和ADD
:
ALTER table chemlab.rule_header
DROP CONSTRAINT rule_header_parent_id_fkey,
ADD CONSTRAINT rule_header_parent_id_fkey
FOREIGN KEY (parent_id) REFERENCES chemlab.rule_header(id) ON DELETE RESTRICT;