SQL:插入更新主键相同的行的所有其他列

Posted _google

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL:插入更新主键相同的行的所有其他列相关的知识,希望对你有一定的参考价值。

在写SQL中,我们经常遇到这样一类问题。每一次插入的时候都要判断数据表中是不是已经存在这条数据,所谓相同数据,是除了主键以外全部列都相同,没有则插入,有则更新。在这种情境下,我们并不清楚知道这一列是否存在,所以单纯的插入和更新都有问题,于是有的人选择了删掉对应id,然后全部重新插入,这里遇到的问题就是,主键自增,删掉了会产生巨大空洞,并不是个好的设计。

 

mysql下,我采用的方法是:

insert into case_law (case_id,laws_id) (select 1,2 from dual where not EXISTS (select case_id,laws_id from case_law where case_id=1 and laws_id=2)

如上简单手段就可实现插入的时候检查是否存在。

以上是关于SQL:插入更新主键相同的行的所有其他列的主要内容,如果未能解决你的问题,请参考以下文章

将 id 插入具有相同信息的行的 PL/SQL 过程

如何在 SQL Server 触发器中复制插入、更新、删除的行

找出删除和更新的行

按 ID 和更新列对 SQL 中的行进行分组

我如何获取 SQL 中新插入的行的 PrimaryKey 值,该值应该适用于所有 SQL 库

详解如何定义SQL Server外关键字约束