我正在使用AdventureWorks2012数据库... 我使用SELECT INTO子句创建了一个备份表。但是,当我尝试使用以下查询将数据插入某些列时收到错误消息:
INSERT INTO Sales.salesorderdetails_backup
(SalesOrderID ,
OrderQty,
ProductId,
SpecialOfferId,
UnitPrice,
UnitPriceDiscount,
LineTotal)
OUTPUT inserted.*
VALUES (57123,
45,
712,
1,
15.89,
0,
45.89)
我收到了错误消息:
无法将值NULL插入列' rowguid',表中 ' AdventureWorks2014.Sales.salesorderdetails_backup&#39 ;;专栏没有 允许空值。 INSERT失败......
答案 0 :(得分:0)
定义表时,可以指定" not null"任何一列或多列的约束。这意味着您必须在该列中为任何插入添加值。
这通常是一件好事。例如," not null是主键列的默认值。
您有两种选择:
1)确保相关列有一个值,然后再插入"插入" (优选的)
2)做一个" alter table"放弃" not null"约束:
NEWID()
另外:您可能知道,{{1}}是为您的"插入"生成GUID的MSSQL函数。
答案 1 :(得分:0)
我添加了DEFAULT约束后终于成功了:
ALTER TABLE Sales.salesorderdetails_backup
ADD CONSTRAINT df_date DEFAULT GETDATE() for ModifiedDate;
ALTER TABLE Sales.salesorderdetails_backup
ADD CONSTRAINT df_guid DEFAULT NEWID() FOR rowguid;