检查mysql中主键冲突的数据

时间:2013-09-05 06:58:20

标签: mysql sql

如果我尝试将数据插入已包含该主键的表中,则显然会失败。

是否有一种简单的方法可以检查我未能插入的数据是否匹配表中已有的数据? (即,如果非主键字段与已存在的主键字段相同)

理想情况下,当我尝试插入已使用的主键时,我希望得到2个不同的错误,而不是单个错误:

- Error1: primary key constraint broken - data being inserted is already in table
- Error2: primary key constraint broken - attempt to enter different data for existing primary key

2 个答案:

答案 0 :(得分:2)

试试这个:

INSERT INTO yourTable (field1, field2, field3...)
SELECT yourValue1, yourValue2, yourValue3...
FROM dual
WHERE NOT EXISTS (SELECT * 
                  FROM yourTable 
                  WHERE field1 = yourValue1
                  AND field2 = yourValue2
                  AND field3 = yourValue3...);

此查询检查您的字段,仅在记录尚未存在时插入。

答案 1 :(得分:2)

要检查你可以做这样的事情

SELECT COUNT(*) FROM
(
  SELECT * FROM tab1
  UNION
  SELECT * FROM tab2
);

UNION删除重复项,因此如果两个表中的行相同,则上面的查询将返回与

相同的结果
SELECT COUNT(*) FROM tab1;

OR

SELECT COUNT(*) FROM tab2;

你的问题不是很详细(例如你如何插入这些数据?)所以我的答案也非常通用,但我相信它对你有用。