新しい従業員を作成するときに呼び出される次のストアド プロシージャを作成しました。従業員が Employee テーブルにまだ存在しない限り、挿入は成功するはずです。
これを確認するために、FirstName、LastName、および DateOfBirth を確認することにしました。行にこれらすべての列の 3 通りの一致が含まれている場合、挿入は失敗するはずです。
私が見ているのは、If ステートメントが AND を OR として扱っていることです。1 つの一致が発生した場合、挿入は失敗します。
いくつか検索した後、If 構造の何が問題なのかがわかりません。どんな助けでも大歓迎です。
Create Procedure CreateEmployee
(
@Role_ID Int,
@FirstName Varchar(50),
@LastName Varchar(50),
@DateOfBirth Varchar(50),
@Active Bit
)
As
Begin
If Not Exists (Select FirstName From Employee Where FirstName = @FirstName)
AND Not Exists (Select LastName From Employee Where LastName = @LastName)
AND Not Exists (Select DateOfBirth From Employee Where 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