如何保证插入数据库的数据不重复?
sql吧
全部回复
仅看楼主
level 2
不是简单的设置一个字段不唯一就行的。
如,
insert into bak_medical(medical_id,name) values(1,'tmp1');
然后我要再插入一条数据,要求mediacl_id和name字段和上面insert的记录都不一样才能插入,反之如果只有一个不一样可以插入。
2022年06月28日 03点06分 1
level 2
就是说我如果
insert into bak_medical(medical_id,name) values(2,'tmp1');
或者
insert into bak_medical(medical_id,name) values(1,'tmp2');
就要可以插入,如果
insert into bak_medical(medical_id,name) values(1,'tmp1');
就不可以插入。必须要两个字段完全相同才不给插入
2022年06月28日 03点06分 2
如果我把两个字段都设置成唯一,则上面两个insert也都不给插入了。
2022年06月28日 03点06分
level 2
我也试过
insert into bak_medical(medical_id,name) values(1,'tmp2')
where not EXISTS
(SELECT medical_id,name from bak_medical where bak_medical.medical_id = 1 and bak_medical.name = 'tmp1')
或者
insert into bak_medical(medical_id,name) values(
select 1,'tmp2' from bak_medical where not EXISTS (SELECT 1 from bak_medical where bak_medical.medical_id = 1 and bak_medical.name = 'tmp1') LIMIT 1
)
这两种写法,拆分执行都可以,但是整体执行就报语法错误了
2022年06月28日 03点06分 3
level 2
insert into bak_medical(medical_id,name) SELECT 1,'tmp2' from bak_medical
where not EXISTS(SELECT medical_id,name from bak_medical where bak_medical.medical_id = 1 and bak_medical.name = 'tmp1')
这样不报错了,但是如果数据库里有两条数据
1,tmp1
2,tmp2
的前提下执行这个sql,丫的插了两条记录,为啥嘞?咋整啊?
2022年06月28日 12点06分 4
level 1
建个触发器 插入的新数据已存在相同记录时,不执行插入
2022年06月29日 09点06分 5
吧务
level 14
[小乖]
2022年07月03日 03点07分 6
level 2
新建触发器,在insert的时候,select一下字段有没有,如果有,就print重复插入
2022年07月03日 11点07分 7
level 8
唯一索引,或者用 MERGE INTO
2022年07月04日 02点07分 8
level 3
同问
2022年09月20日 10点09分 9
level 1
加个mediacl_id、name的唯一索引
2022年10月18日 08点10分 10
1