如果没有违反PK则插入

时间:2019-11-20 14:55:47

标签: sql-server

我需要创建一个例程来定期检查数据库,并在必要时进行更改。

让我用以下示例解释我的问题。 数据库存储了比赛的参与者和获胜者。

我们得到了两个存储基本数据的表(比赛,人员) 此外,我们还有两个表格可供参考。

  1. 存储TournamentId和peopleId的获胜者表
  2. 存储TournamentId和peopleId的参与者表

现在,脚本应该从获胜者表中获取所有条目并将其插入参与者表中,因为每个获胜者也是参与者。

y1 <- rep(sample(c(1:10),10, replace = TRUE))
y2 <- rep(sample(c(1:10),10, replace = TRUE))

但是,数据库的某些用户会在参与者表中手动插入赢家,有些则不会。 由于可能会出现PK违规,因此上面的代码无效。

仅当条目尚未在参与者表中时,如何告诉语句进行插入?

在此先感谢您的英语水平,并记住上面的示例是虚构的,我知道所描述的数据模型并不完全适合所描述的用例。

1 个答案:

答案 0 :(得分:2)

Merge

merge ParticipantTable as trg
    using WinnerTable as src on src.pk_col1 = trg.pk_col1
                                and src.pk_col2 = trg.pk_col2
                                ... /* here is PK columns binding */
when not matched then
    insert  (col1, col2, col3, ...)
    values (src.col1, src.col2, src.col3, ...);