以前に、このストアド プロシージャを作成しました。
Create Procedure CreateEmployee
(
@Role_ID Int,
@FirstName Varchar(50),
@LastName Varchar(50),
@DateOfBirth Varchar(50),
@Active Bit
)
As
Begin
If Not Exists (Select FirstName, LastName, DateOfBirth
From Employee Where FirstName = @FirstName
AND LastName = @LastName
AND DateOfBirth = @DateOfBirth)
Begin
Insert Into Employee (Role_ID, FirstName, LastName, DateOfBirth, Active)
Values (@Role_ID, @FirstName, @LastName, @DateOfBirth, @Active)
End
Else
Begin
Select 'User already exists!'
End
End
この手順では、挿入を実行する前に、Employee テーブルに従業員がまだ存在していないことを確認します。
あらゆる種類のテーブル変更が発生する前に行われる単一の条件チェックであるという点で、十分な防弾のようです。ただし、トランザクションについていくつか読んだ後、保護層を追加するためにすべての手順をトランザクションにする必要があるかどうか疑問に思っています。
tl博士; トランザクションを使用してはいけない場合はありますか?