所以我在 SQL Server 中有一个这样定义的表
create table test(value varchar(200), Reverse(value) as valueReverse);
现在,当我在此表中插入某些内容时,假设我插入字符串 hello,它会将值存储在表中。
value | valueReverse
--------------------
hello | olleh
我正在尝试将表转换为 PostgreSQL,但是reverse() 函数不起作用并且给我带来错误。在 postgres 中创建此表的正确方法是什么?
最佳答案
适用于 PostgreSQL 12 及更高版本
如果您使用的是 Postgres 12 或更高版本,则可以对 valueReverse
列使用 GENERATED ALWAYS AS
,如下所示:Manual
create table test(value varchar(200),
valueReverse varchar(200) generated always as (reverse(value)) STORED );
适用于 PostgreSQL 11 或更低版本
对于早期版本,您可以使用触发器
,如下所示。
创建触发函数
create or replace function trig_reverse() returns trigger as
$$
begin
new.valueReverse=reverse(new.value);
return new;
end;
$$
language plpgsql
创建触发器
create trigger trig_rev
before insert or update on test
for each row
execute procedure trig_reverse();
关于sql - 反转 postgres 中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65913162/