Sql Server错误:消息515,级别16,状态2,行6

时间:2013-12-06 20:57:56

标签: sql sql-server tsql

为什么会这个查询

SELECT * FROM Vendors

INSERT INTO Vendors 
    (Name, Description, StartDate, RatePerHour, Currency, Coverage, Website)
VALUES 
    ('Any','Any','12/6/2013','36.00','Any','Any','Any');

导致此消息失败

  

Msg 515,Level 16,State 2,Line 6
  无法将值NULL插入列'VendorClassificationID',表'VendorScorecard.dbo.Vendors';列不允许空值。 INSERT失败。

4 个答案:

答案 0 :(得分:3)

您的INSERT语句告诉SQL。

向Vendors表添加一行。

我只想填充一些列(我列出的那些列),所以我希望你填充其他列。使用NULL或列DEFAULT(如果存在)填充它们。

所以SQL尝试,找到一个不喜欢NULL的列(VendorClassificationID),礼貌地告诉你,“不能做......”

正如Aaron指出的那样,也可能涉及触发器

答案 1 :(得分:2)

检查Vendors表的TABLE定义。 COLUMN VendorClassificationID很可能是NOT NULL列。

换句话说,要解决此问题,您必须在上面的VendorClassificationID声明中提供INSERT

答案 2 :(得分:2)

让我们看一下错误信息。

  

Msg 515,Level 16,State 2,Line 6
  无法将值NULL插入“VendorClassificationID”列,表'VendorScorecard.dbo.Vendors';列不允许空值

INSERT失败。

哇,我做的部分粗体非常有说服力。显然,VendorClassificationID列不能是NULL,所以让我们调整查询。

SELECT * FROM Vendors
  INSERT INTO Vendors 
    (VendorClassificationID, Name, Description, StartDate, RatePerHour, Currency, Coverage, Website)
  VALUES 
     (1, 'Any', 'Any', '12/6/2013', '36.00', 'Any', 'Any', 'Any');

完成。

当然,数字1可以用你想要的任何值代替。

答案 3 :(得分:0)

您没有在供应商

中指定{NULL}列的VendorClassificationID