如果我尝试将数据插入已包含该主键的表中,则显然会失败。
是否有一种简单的方法可以检查我未能插入的数据是否匹配表中已有的数据? (即,如果非主键字段与已存在的主键字段相同)
理想情况下,当我尝试插入已使用的主键时,我希望得到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
答案 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;
你的问题不是很详细(例如你如何插入这些数据?)所以我的答案也非常通用,但我相信它对你有用。