我有两张桌子 -tblRequests
和tblData
. tblRequests
有一个名为 的主键recID
,并且tblData
有一个指向该主键的外键,称为requestRecID
。
在 上tblRequests
,我在两列上有一个唯一索引,可以防止用户输入重复的行。
问题:当我尝试在 上重复插入时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