我正在尝试在表上进行插入,它抛出了这个错误。但是,它没有向我显示受影响的列。
有谁知道这里发生了什么?
不知何故,您的应用程序或 SQL 正在发送<NULL>
到已指定的列"NOT NULL"
。
我刚刚在我正在编写的应用程序中看到了这一点。考虑下表:
CREATE TABLE "PURCHASE" (
"PURCHASE_NAME" VARCHAR(150) NOT NULL,
"NOTIFY_FLAG" CHARACTER(1) NOT NULL,
"PURCHASE_AMOUNT" DECIMAL(9, 2)
)
以以下方式插入将产生您询问的错误:
INSERT INTO PURCHASE
(PURCHASE_NAME, NOTIFY_FLAG, PURCHASE_AMOUNT)
VALUES
('Lotus Organizer version 3.1', null, 12743.27);
您的屏幕截图显示您的数据库客户端未向您发送列信息。它应该看起来像这样:
ERROR [23502] [IBM][DB2/AIX64] SQL0407N Assignment of a NULL value to a NOT NULL
column "TBSPACEID=15, TABLEID=11, COLNO=16" is not allowed.
要对此进行调试,您需要以某种方式捕获您的应用程序正在生成的 SQL,并通过更直接的 DB 客户端运行它,例如 TOAD ( http://www.quest.com/database-management/ )。