insert into select not exists sql server multiple columns primary key voilation

时间:2016-07-16 06:56:13

标签: sql sql-server

我有一个表tblApply,它有主键(email_id,Job_id),它们是tblEmail(email)和tblJob(Job_id)的外键。我想在tblApply中插入新值,但要避免在email_id,Job_id的组合中已存在的值。以下是我的代码。我该怎么办我在存储过程中执行此操作。

}).done(function(data){
    data = JSON.parse(data);
    console(data['post']);
});

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

要插入不存在的记录,您可以LEFT JOIN使用NULL检查进行条件检查。

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