任意のテーブルの挿入コマンドの後に実行されるこのようなストアド プロシージャがあります
Create Procedure [dbo].[HistoryInsert](
@TableName nVarchar(500),
@RecordId bigInt
)
As
declare @Query nVarChar(max)
if Not Exists (Select Top 1 1
From Information_schema.tables
Where Table_Name = @TableName + 'History')
Set @Query = 'Select * Into ' + @TableName + 'History FROM ' + @TableName
Else
Set @Query = 'Insert Into ' + @TableName + 'History Select * FROM ' + @TableName
Exec(@Query)
Exec(@Query)
この手順を初めて実行すると、履歴テーブルが作成されました。この手順を 2 回目に実行すると、作成されたテーブルに ID 列があるため、挿入に失敗しました。列の ID プロパティをインクリメントせずにすべての列をテーブルから選択する方法。