我的目标是只在不存在相同值的情况下才执行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);
}
}
答案 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