我不明白為什么即使我將非空選擇設定為進行插入,我仍然會收到我試圖輸入空值的錯誤。作為背景關系,我試圖將另一個表中的兩列插入到一個新表中。
CREATE TABLE t.tb_c
(
id INT NOT NULL,
itm CHARACTER(5) NOT NULL,
des CHARACTER(120) NOT NULL,
CONSTRAINT pk_item PRIMARY KEY (item_id)
);
INSERT INTO t.tb_c (itm)
SELECT itm
FROM erp.tb_d
WHERE itm IS NOT NULL;
INSERT INTO t.tb_c (des)
SELECT des
FROM erp.tb_d
WHERE des IS NOT NULL;
我收到此錯誤:
SQLState:23502
簡短描述:更新插入或設定值為 NULL,但物件列不能包含 NULL 值錯誤:?des? 的 null 值違反了限制 not null
詳細資訊:該行是 (90002, AA111, null)。
SQL 狀態:23502
uj5u.com熱心網友回復:
試試這個插入:
INSERT INTO t.tb_c (itm, des)
SELECT itm, des
FROM erp.tb_d
WHERE des IS NOT NULL AND itm IS NOT NULL;
uj5u.com熱心網友回復:
alter table t.tb_c alter column itm drop not null;
alter table t.tb_c alter column des drop not null;
將 id 從 int 更改為 serial follow=> 將主鍵 int 型別更改為 serial
或者
ALTER TABLE t.tb_c ALTER COLUMN itm SET DEFAULT '';
ALTER TABLE t.tb_c ALTER COLUMN des SET DEFAULT '';
將 id 從 int 更改為 serial follow=> 將主鍵 int 型別更改為 serial
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/481670.html
標籤:sql PostgreSQL
