防止重复输入时自动增加

时间:2013-03-23 15:16:03

标签: mysql pdo auto-increment duplicates

我已经看到了这个问题(见底部链接),但我似乎无法找到答案。问题是我在一个表上插入数据,该表具有作为主键的自动增量ID,另一个字段具有UNIQUE索引以避免重复。这有效,但是当发生这种情况时,虽然没有存储数据,但ID会增加。

删除自动增量并自行处理,选择最大值(ID)会更好吗?


目前,我已尝试了多种策略,使其按原样运作,包括INSERT IGNOREINSERT ... ON DUPLICATE KEY UPDATE

我最近的尝试是使用以下查询:

INSERT INTO
    content(field1, field2)
SELECT(:field1, :field2) FROM DUAL
WHERE NOT EXISTS(
    SELECT field1, field2
    FROM content
    WHERE field1 = :field1
)

相关

2 个答案:

答案 0 :(得分:0)

感谢this question我已经能够解决该错误。问题是SELECT(:field1, :field2)不应该有括号。所以查询应该是:

INSERT INTO
    content(field1, field2)
SELECT :field1, :field2 FROM DUAL
WHERE NOT EXISTS(
    SELECT field1, field2
    FROM content
    WHERE field1 = :field1
)

答案 1 :(得分:0)

你可以做一个ORDER BY:)

UPDATE 'table' 
    SET column_id = column_id+1 
    WHERE column_id > [point where you want a un-occupied key] 
    ORDER BY column_id DESC

mysql首先执行where和order,然后执行更新