如何在SQL Server 2012中的特定列中插入数据?

时间:2015-05-11 22:35:32

标签: sql-server tsql sql-server-2012

我正在使用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失败......

2 个答案:

答案 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;