メンバがNotesテーブルに存在しない場合は、前の挿入行をロールバックする必要があります。私はBeginトランザクションに両方の行を置くことによって、ロールバックすると考えましたが、エラーがスローされないため、insertコマンドが実行されます。 memberedが存在しない場合、どのようにエラーをスローして、コードブロック全体がロールバックされるのですか?beginトランザクションに含まれます。
begin try
begin transaction
insert into notes (memberid, NoteEffDate, LoginName, NoteDesc) values (367737, GETDATE(), 'marc', 'blah blah')
IF EXISTS (SELECT memberid FROM notes WHERE memberid =4774769)
begin
update notes set notedesc = 'hello there' where memberid = 4774769
end
commit transaction
end try
begin catch
rollback transaction
select ERROR_MESSAGE()
end catch
go
制御フローにエラーを使用することは実際には良い考えではありません。なぜあなたはまず存在のチェックをしないのですか? – ajeh