gpt4 book ai didi

sql - 保持列与 Postgres 中的另一列同步

转载 作者:行者123 更新时间:2023-11-29 14:10:11 25 4
gpt4 key购买 nike

我想知道是否可以让一列始终保持同步与同一个表中的另一列。

以这张表为例:

+------+-----------+
| name | name_copy |
+------+-----------+
| John | John |
+------+-----------+
| Mary | Mary |
+------+-----------+

我愿意:

能够INSERT到这个表中,只为name列提供一个值——name_copy列应该自动取值我在 name

中使用

UPDATE-ing 预先存在的行上的 name 列时,name_copy 应该自动更新以匹配新的和更新的 name_column.

一些解决方案

  • 我可以通过代码做到这一点,但那会非常糟糕,因为不能保证我的代码始终可以访问数据(如果有人通过数据库客户端更改数据怎么办?)

在 Postgres 中解决这个问题的安全、可靠且简单的方法是什么?

最佳答案

您可以创建一个 trigger .简单的触发函数:

create or replace function trigger_on_example()
returns trigger language plpgsql as $$
begin
new.name_copy := new.name;
return new;
end
$$;

Postgres 12+ 中有一个很好的替代形式 generated columns.

create table my_table(
id int,
name text,
name_copy text generated always as (name) stored);

请注意,不能直接写入生成的列。

db<>fiddle. 中测试这两种解决方案

关于sql - 保持列与 Postgres 中的另一列同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40900861/

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