回答:
テーブル変数が必要ですが、これは簡単なことです。
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
output
です。
DECLARE @InsertedIDResults TABLE (ID int); INSERT INTO MyTable (Name, Age) OUTPUT INSERTED.ID INTO @InsertedIDResults VALUES('My Name', 30); DECLARE @InsertedID int = (SELECT TOP 1 ID FROM @InsertedIDResults);
1年以上後...テーブルの自動生成されたIDを取得する必要がある場合は、
SELECT @ReportOptionId = SCOPE_IDENTITY()
それ以外の場合は、テーブルの使用に悩まされているようです。
後で説明しますが、UPDATEのSET句またはSELECTのフィールドで変数を使用して値を出力することもできます。
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
上記の例では、@ val1には変更前の値があり、@ val2には変更後の値がありますが、トリガーからの変更はval2には含まれないと思われるため、その場合は出力テーブルを使用する必要があります。最も単純な場合以外は、出力テーブルもコードで読みやすくなると思います。
これが非常に役立つ1つの場所は、列をコンマ区切りのリストに変換する場合です。
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
。