2016-07-16 9 views
3

tblEmail(電子メール)とtblJob(ジョブID)の外部キーである主キー(email_id、Job_id)を持つテーブルtblApplyがあります。私はtblApplyに新しい値を挿入したいが、すでにそこにあるものはemail_id、Job_idの組み合わせでは避けたい。以下は私のコードです。私はどうすればいいのですか?私はストアドプロシージャ内でこれをやっています。select into not select SQL Server複数の列主キーのぼかし

insert into tblApply(email_Id, Job_Id, Apply_Date) 
    select @emailId, tblJobsJob_Id, GetDate() from tblJobs 
    where Job_Active = 1 

答えて

1

私は、重複しない一意のキー値を挿入しないように行を挿入するストアドプロシージャを設計したいと思っています。それはあなたができる場合なら

は:

insert into tblApply(email_Id, Job_Id, Apply_Date) 
select @emailId, tblJobsJob_Id, GetDate() from tblJobs 
where Job_Active = 1 AND 
     NOT EXISTS(SELECT 1 FROM tblApply 
       WHERE email_Id = @emailId AND Job_Id = tblJobsJob_Id) 
0

非既存のレコードを挿入するには、NULLチェックしてLEFT JOINで条件チェックを使用することができます。

INSERT INTO tblApply (email_Id, Job_Id, Apply_Date) 
SELECT @emailId, tblJobsJob_Id, GetDate() 
FROM tblJobs TJ 
LEFT JOIN tblApply TA ON TA.email_id = @emailId AND TA.Job_id = TJ.tblJobsJob_Id 
WHERE TY.Job_Active = 1 AND TA.Job_id IS NULL