微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Postgres

如何解决在Postgres

我正在尝试使用以下查询将列大小从100更改为150 varchar数据类型:

alter table data_warehouse.tbl_abc
alter column first_nm varchar(150) null;

出现以下错误

sql错误[42601]:错误:“ varchar”处或附近的语法错误 位置:77

解决方法

语法略有不同,因此请尝试以下操作:

ALTER TABLE data_warehouse.tbl_abc
    ALTER COLUMN first_nm type varchar(120);
,

语法错误是您错过了TYPE关键字:

ALTER TABLE data_warehouse.tbl_abc
ALTER COLUMN first_nm TYPE varchar(150);

,如果您有一个要删除的NOT NULL约束,请在同一ALTER COLUMN语句内添加一个新的ALTER TABLE

ALTER TABLE data_warehouse.tbl_abc
ALTER COLUMN first_nm TYPE varchar(150),ALTER COLUMN first_nm DROP NOT NULL;

以供参考:https://www.postgresql.org/docs/current/sql-altertable.html

编辑:如注释中所述,如果您有一个涉及同一列的视图,请将其拖放并在事务下重新创建它:

BEGIN TRANSACTION;
DROP VIEW [...];
ALTER TABLE [...];
CREATE VIEW [...];
COMMIT;

请注意,要更改表,您必须获得对该表的排他锁,因此在整个过程中,同一表以及该表视图上的所有查询都将被锁定,即使它们未读取也是如此。从更改的列中删除(因为整个表已锁定)-在生产环境中谨慎使用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。