と の 2 つのテーブルがtblRequests
ありtblData
ます。tblRequests
には という主キーがあり、 というrecID
主tblData
キーへの外部キーがありますrequestRecID
。
では、 2tblRequests
つの列に一意のインデックスがあり、ユーザーが重複した行を入力するのを防ぎます。
問題: で重複挿入を試みると、tblRequests
予期したとおりにエラーが発生しますが、tblData
まだ外部キーを更新しています。
では、「挿入が行われなかったtblData
場合は更新しない」と言うにはどうすればよいでしょうか。tblRequests
いくつかの調査を行うと、それは適切であるように思わtry/catch
れますが、私はこのレベルの SQL にまったく慣れていません。
以下の私のコード:
CREATE Procedure [dbo].[spInsert]
(
@vOpID varchar(3),
@vSNumb varchar(12)
)
AS
Declare @vRecID int
BEGIN
BEGIN TRANSACTION
Insert tblRequests
(
opID,
SNumb
)
Values
(
@vOpID,
@SNumb
)
Set @vRecID = IDENT_CURRENT ('tblRequests')
COMMIT TRANSACTION;
BEGIN TRANSACTION
Update tblData
Set requestRecID = @vRecID
Where SNumb = @SNumb And opID = @vOpID
COMMIT TRANSACTION;
END