如何新增資料表中有Identity欄位
2013年10月7日 星期一
在補資料時當遇到Identity欄位時,會發生以下錯誤:
訊息 544,層級 16,狀態 1,行 1
當 IDENTITY_INSERT 設為 OFF 時,無法將外顯值插入資料表 'bt_test' 的識別欄位中。
用以下方法則可解決
Create Procedure spx_identityinsert
(
@dbName VARCHAR(100),
@schemaName varchar(100),
@tableName VARCHAR(100),
@insertSql Varchar(MAX)
)
AS
BEGIN
Declare @sql varchar(MAX)
if(OBJECTPROPERTY(OBJECT_ID(@dbName +'.'+@schemaName +'.'+@tableName ,'U'),'TableHasIdentity') > 0)
Begin
Set @sql = 'SET IDENTITY_INSERT ' + @dbName+'.'+@schemaName+'.'+@tableName+ ' ON;'
Set @sql = @s + @insertSql
Set @sql = @s + 'SET IDENTITY_INSERT ' + @dbName+'.'+@schemaName+'.'+@tableName+ ' OFF;'
Execute(@sql)
End
END
Go;
/*執行範例:*/
Exec usp_identityinsert 'MyTestDB','dbo','bt_test','Insert into tb_test (id,name) values (9,''neil'')' /*塞字串要跳脫字元*/
0 意見:
張貼留言