DB2 SQL将NULL插入到具有默认值的NOT NULL中

问题描述 投票:0回答:1

当将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值来代替。我应该注意什么?

谢谢。

sql db2 default-value notnull
1个回答
0
投票

如果此列的INSERT语句中未提供值,则该默认值将用于该列。因此,不要像这样在列表中包括要获取其默认值的列:

INSERT INTO KTI.FKTIM04 (
    ObjectID
    )
VALUES (
   'UMSTM0LW8A8Z50DT4WA7U93EEQDRXRTH'
    )

这样,将插入行,并且由于未在列表中指定2列,将获得其默认值。参见demo

© www.soinside.com 2019 - 2024. All rights reserved.