2016-07-16 3 views
3

Ich habe eine Tabelle tblApply, die Primärschlüssel (email_id, Job_id) haben, die Fremdschlüssel von tblEmail (E-Mail) und tblJob (Job_id) sind. Ich möchte neue Werte in tblApply einfügen, aber diejenigen vermeiden, die bereits in einer Kombination von email_id, Job_id vorhanden sind. Unten ist mein Code. Wie soll ich es machen? Ich mache das in einer gespeicherten Prozedur.einfügen in auswählen nicht vorhanden sql server mehrere Spalten Primärschlüssel voilation

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

Antwort

1

Nun von dem, was ich verstehe, möchten Sie eine gespeicherte Prozedur zum Einfügen von Zeilen, die doppelte doppelte Schlüsselwerte einfügen vermeiden möchten.

Wenn das der Fall, dass Sie tun können:

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

die nicht vorhandene Datensätze einzufügen, können Sie die Zustandsprüfung durch LEFT JOIN mit NULL Prüfung verwenden.

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 
Verwandte Themen