DB2错误:不允许将NULL值分配给非空列“”?

时间:2012-12-11 20:39:51

标签: .net database vb.net insert db2

我正在尝试在表上执行插入操作,并且它正在抛出此错误。但是,它没有向我显示受影响的列。

有谁知道这里发生了什么?

DB2 Error

1 个答案:

答案 0 :(得分:0)

您的应用或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并通过更直接的数据库客户端运行它,如TOAD(http://www.quest.com/database-management/)。