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:插入更新主键相同的行的所有其他列的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SQL Server 触发器中复制插入、更新、删除的行