TSQLトランザクション内には、レコードをに挿入する操作と、レコードの列の値でMyTable1
更新する操作があります。これは、トランザクションがコミットされた後にのみ挿入されます。では、実際にテーブルに挿入される前に、この自動生成された値を取得するにはどうすればよいでしょうか。MyTable2
Identity
MyTable1
質問を説明するためだけにコーディングします。
CREATE TABLE MyTable1(
MyTable1Id int identity(1,1) primary key,
Field1 varchar(50)
)
CREATE TABLE MyTable2(
MyTable2Id int identity(1,1) primary key,
MyTable1Id int
)
CREATE PROCEDURE MyProc(
@MyVal1 [varchar](50)
)
AS
BEGIN TRAN
-- try to insert
INSERT INTO MyTable1(
Field1
)
SELECT @MyVal1
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
END
-- update MyTable2
DECLARE @TheUnknownIdValue int
UPDATE MyTable2
SET MyTable1Id = @TheUnknownIdValue -- how to get the value needed here?
WHERE ...
IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
END
COMMIT TRAN