sql - 插入到选择不存在的sql server多列主键冲突

标签 sql sql-server

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

insert into tblApply(email_Id, Job_Id, Apply_Date)
    select @emailId, tblJobsJob_Id, GetDate() from tblJobs
    where Job_Active = 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)

关于sql - 插入到选择不存在的sql server多列主键冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38408643/

相关文章:

sql-server - 如何使用最新记录更新 SQL Server 表

php - 从 MySQL 数据库检索项目,但首先使用一些数学规则

java - 如何保持结果集打开,或调用不同的结果集?

SQL Server 2008 - 即使工作实际上已完成,查询也需要很长时间才能完成

sql-server - SQL Server(Azure Synapse)的估计执行计划中的这些不同属性意味着什么?

c# - 将消息从存储过程返回到 C# 应用程序

sql - 计数表中值连续出现的次数

php - (PHP) 具有排序依据和一定范围的 MySQL 随机行大表

sql-server - MS SQL Server 与 Rails 4

c# - ASP.net 嵌套中继器谜题 : Basing inner SQL Query on data from outer repeater