主キー (自動インクリメント値) としてという名前のテーブルがAddress
あり、タイプの列もあります。AddressID
tmsp
TimeStamp
テーブルからレコードを削除するストアド プロシージャを作成しましたが、削除する前にレコードを.txt
ファイルに保存しました。レコードをテキスト ファイルに保存する過程で、タイムスタンプを値に変換しVarbinary
ます。tmsp
その列がVarbinary
テキストファイルに保存されることを意味します。
次に、削除されたレコードをデータベースに挿入する新しいストアド プロシージャを作成します。コードは次のとおりです。
DECLARE @SQL NVARCHAR(MAX) = ''
BEGIN
SET IDENTITY_INSERT dbo.Address ON
SET @SQL = N'BULK INSERT Address
FROM ''' + @Address + '''
WITH (
FIRSTROW = 2,
FIELDTERMINATOR = '','',
ROWTERMINATOR = ''\n''
)'
EXEC sp_executesql @SQL
SET IDENTITY_INSERT dbo.Address OFF
END
次のエラーが表示されます。
メッセージ 273、レベル 16、状態 1、プロシージャ CleanUp_Address、行 43 [バッチ開始行 2]
タイムスタンプ列に明示的な値を挿入できません。列リストで INSERT を使用してタイムスタンプ列を除外するか、タイムスタンプ列に DEFAULT を挿入します。
を削除するIDENTITY_INSERT
と、データが新しい値としてテーブルに挿入されるため、AddressID
上書きされますが、それは私が望むものではありません。を保持する必要がありAddressID
ます。
何か案は?