ON删除postgres中的NULL

tam*_*oon 15 postgresql entity-framework

嗨我是postgresql环境的新手,所以已经迷失了一段时间.我希望在删除父实体时保留我的数据.我想知道如何为postgresql数据库制作'ON DELETE SET NULL'.请给我一个线索.

Cra*_*ger 24

ON DELETE SET NULL 是标准的外键约束选项.

CREATE TABLE some_child (
    parent_id integer references parent(id) on delete set null
);
Run Code Online (Sandbox Code Playgroud)

要么:

ALTER TABLE some_child 
ADD CONSTRAINT parent_id_fk 
FOREIGN KEY (parent_id) REFERENCES parent(id) 
ON DELETE SET NULL;
Run Code Online (Sandbox Code Playgroud)

请参阅文档.

在以后的帖子中,请确保包含PostgreSQL版本并解释您已经尝试过的内容.

  • 在第一个示例中`parent_id`列上声明的`not null`约束将在删除引用的`parent`行时触发错误,基本上使`on delete set null`操作无效.从文档:"这些(SET NULL和SET DEFAULT)导致引用列分别被删除时引用的行被设置为空值或默认值.请注意,这些**不能免于您观察任何约束**".如果你有一个`not null`约束,你可能想要使用`ON DELETE CASCADE`,而不是`ON DELETE SET NULL`. (7认同)