小编dim*_*ies的帖子

更改列集非空失败

考虑下表,大约有10M行

CREATE TABLE user
(
  id bigint NOT NULL,
  ...
  CONSTRAINT user_pk PRIMARY KEY (id)
)
WITH (
  OIDS=FALSE
)
Run Code Online (Sandbox Code Playgroud)

然后我应用了以下更改

ALTER TABLE USER ADD COLUMN BUSINESS_ID    VARCHAR2(50);
--OK
UPDATE USER SET BUSINESS_ID = ID; //~1500 sec
--OK
ALTER TABLE USER ALTER COLUMN BUSINESS_ID SET NOT NULL;

    ERROR: column "business_id" contains null values
    SQL state: 23502
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为id列(已复制到business_id列)不能包含空值,因为它是主键,但要确保我检查它

select count(*) from USER where BUSINESS_ID is null
    --0 records
Run Code Online (Sandbox Code Playgroud)

我怀疑这是一个错误,只是想知道我是否遗漏了一些微不足道的东西

postgresql alter enterprisedb notnull

19
推荐指数
2
解决办法
3万
查看次数

标签 统计

alter ×1

enterprisedb ×1

notnull ×1

postgresql ×1