【发布时间】:2021-04-15 03:29:25
【问题描述】:
我知道这并不漂亮,但绕过错误插入到 Postgres 中生成的列中会很有帮助。假设我们有一个这样的表:
create table testing (
id int primary key,
fullname_enc bytea,
fullname text generated always as (pgp_sym_decrypt(fullname_enc, 'key')) stored
);
如下查询返回预期错误:ERROR: cannot insert into column "fullname" DETAIL: Column "fullname" is a generated column.
insert into testing(id, fullname) values (3, 'John Doe');
我想在这个表上的 INSERT 上创建一个规则,例如:
create rule encrypter as on insert to testing DO INSTEAD insert into testing (id, fullname_enc) values (new.id, pgp_sym_encrypt(new.fullname, 'key'));
由于我们重写了查询,我天真地想这是否不会导致引擎出错,但它仍然会。知道如何实现吗?
问这个的原因是迁移到 PostgreSQL 12。
【问题讨论】:
标签: postgresql rules generated-columns