gpt4 book ai didi

postgresql - 如何进行级联更新?

转载 作者:行者123 更新时间:2023-11-29 11:19:00 27 4
gpt4 key购买 nike

我有一组表,其中的列对另一个表中的用户名列具有外键约束。我被指示不要将 ON UPDATE CASCADE 添加到表定义中,因为我们不想默默地丢失事件日志等信息。我们只想在这个实例中明确级联。不过,我还没有找到如何在查询中执行此操作的示例。我认为它看起来像

UPDATE CASCADE "MySchema"."MyTable"
SET user_name = "John Smith"
WHERE user_id = 1

这可能吗?

最佳答案

在 Postgres(和其他 RDBM)中,级联更新只适用于外键。示例:

create table groups (
group_id int primary key
);

create table users (
user_id int primary key,
group_id int references groups on update cascade
);

insert into groups values (1);
insert into users values (1, 1);
update groups set group_id = 10 where group_id = 1;

select * from users;

user_id | group_id
---------+----------
1 | 10
(1 row)

其实其他选项都不需要。如果您觉得需要对不是外键的列执行此操作,则意味着该模型设计不佳(不是 normalized )。另一方面,外键选择性级联更新的可能性并没有解决任何实际问题,而是打破了一般规则。

关于postgresql - 如何进行级联更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38103781/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com