INSERT IGNORE因auto_increment失败

时间:2018-06-05 11:10:50

标签: php sql insert auto-increment insert-into

我的目标是只在不存在相同值的情况下才执行SQL插入。

这是我的表1:

INSERT IGNORE INTO table1 (version) VALUES ('12345');

我的查询如下所示:

INSERT INTO table1 (version)
SELECT * FROM (SELECT '12345') AS tmp
WHERE NOT EXISTS (
    SELECT version FROM table1 WHERE version = '12345'
) LIMIT 1;

问题是ignore语句不起作用,因为id列(auto_increment)的每一行都不同。

这里的任何人都有一个解决方案,以避免双重保存相同的值?

解决方案:

ProcessStartInfo start = new ProcessStartInfo();
        start.FileName = ;
        start.Arguments = ;  
        start.UseShellExecute = false;
        start.RedirectStandardOutput = true;
        using (Process process = Process.Start(start))
        {
            using (StreamReader reader = process.StandardOutput)
            {
                string result = reader.ReadToEnd();
                Console.Write(result);
            }
        }

1 个答案:

答案 0 :(得分:3)

您的问题与自动增加的列无关。

您需要version上的唯一约束/索引:

alter table table1 constraint unq_table1_version unique (version);

我也不建议insert ignore用于此目的。它可能会忽略其他错误。相反,请使用on duplicate key update

insert into table1 (version) 
    values ('12345')
    on duplicate key update version = values(version);  -- this is a no-op