У меня есть две таблицы - tblRequests
и tblData
. tblRequests
имеет первичный ключ recID
, а tblData
имеет внешний ключ к этому первичному ключу, который называется requestRecID
.SQL Server 2005: попробуйте Catch с обновлением на детской таблице
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
Отлично! Каждый сценарий работает как ожидается. Спасибо! – SeanFlynn