sql - 反转postgres中的列
问题描述
所以我在 SQL Server 中有一个这样定义的表
create table test(value varchar(200), Reverse(value) as valueReverse);
现在,当我在此表中插入某些内容时,可以说我插入字符串 hello,它会将值存储在表中。
value | valueReverse
--------------------
hello | olleh
我正在尝试将表转换为 PostgreSQL,但是 reverse() 函数不起作用,它给了我错误。在 postgres 中创建此表的正确方法是什么?
解决方案
对于 PostgreSQL 12 及更高版本
如果您使用的是 Postgres 12 或更高版本,那么您可以使用GENERATED ALWAYS AS
如valueReverse
下列:手动
create table test(value varchar(200),
valueReverse varchar(200) generated always as (reverse(value)) STORED );
对于 PostgreSQL 11 或更低版本
对于早期版本,您可以使用Triggers
如下所示。
创建触发函数
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();
推荐阅读
- javascript - 在同一个工作表上使用两个 onEdit() 函数(谷歌表格)
- android - android中.srt的MIME类型
- sql - 使用连接对多对多关系进行单个 SQL 查询
- google-bigquery - Google BigQuery - 现有供应表的行级安全性
- java - 连接不可用,但谁在重试?
- javascript - Cordova iOS:加载资源失败:在此服务器上找不到请求的 URL
- angular - 键值对数组转换为数组对象
- html - 如何在不使用绝对位置/固定位置或弹性框的情况下垂直居中侧边栏(老式方式)
- google-oauth - 如何从多个安卓设备修改谷歌驱动器上的文件?
- docker - ksqlDB CLI 不适用于 dockerized ksqlDB 服务器