当将NULL值插入定义为NOT NULL WITH DEFAULT值的列时,我遇到了一个问题。在此示例中,出于说明目的,我删除了大多数列。
CREATE TABLE
FKTIM04
(
OBJECTID CHARACTER(32) NOT NULL,
UP_CHANGE_CL CHARACTER(1) DEFAULT '1' NOT NULL,
UP_CTRL_CL CHARACTER(1) DEFAULT '0' NOT NULL,
CONSTRAINT PK_FKTIM04 PRIMARY KEY (OBJECTID)
);
当我执行此SQL语句时,出现错误:
INSERT INTO KTI.FKTIM04 (
UP_Change_CL
,UP_ctrl_CL
,ObjectID
)
VALUES (
NULL
,NULL
,'UMSTM0LW8A8Z50DT4WA7U93EEQDRXRTH'
)
错误:
[[代码:-407,SQL状态:23502]将NULL值分配给NOT不允许使用NULL列“ TBSPACEID = 2,TABLEID = 1298,COLNO = 46”。SQLCODE = -407,SQLSTATE = 23502,DRIVER = 4.22.29
我知道该列定义为NOT NULL。如果它尝试在该列中插入NULL,则不应该采用DEFAULT值吗?
[请教我如何获取DEFAULT值来代替。我应该注意什么?
谢谢。
如果此列的INSERT
语句中未提供值,则该默认值将用于该列。因此,不要像这样在列表中包括要获取其默认值的列:
INSERT INTO KTI.FKTIM04 (
ObjectID
)
VALUES (
'UMSTM0LW8A8Z50DT4WA7U93EEQDRXRTH'
)
这样,将插入行,并且由于未在列表中指定2列,将获得其默认值。参见demo。