如何解决如何将 PostgreSQL 12 生成的列转换为普通列?
create table people (
id bigserial primary key,a varchar,b boolean generated always as (a is not null) stored
);
但现在我希望列 b
是可设置的,但我不想丢失列中已有的数据,我可以删除该列并重新创建它,但这会丢失当前数据。
提前致谢
解决方法
您可以在一个事务中运行多个 ALTER TABLE
语句:
BEGIN;
ALTER TABLE people ADD b_new boolean;
UPDATE people SET b_new = b;
ALTER TABLE people DROP b;
ALTER TABLE people RENAME b_new TO b;
COMMIT;
,
- alter table people add column temp_data boolean;
- update people set temp_data=b --(将数据从b列复制到temp_data)
- 对“b”列做任何你想做的事情。
- 更新人员设置 b=temp_data --(将数据移回)
- alter table people drop column temp_data --(可选)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。