Possible Duplicate:
how to use if not exists while inserting a row mysql
我有问题:
我有一个名为“table”的表,有 4 列:id(int, PK, AI, Unique), col1(varchar), col2(varchar), col3(datetime)
许多用户可以连接到 mysql 服务器并向“表”中插入行。问题是 col2 和 col3 不能存在于“table”中的其他行中。
我会写这样的东西: 如果不存在(从表中选择*,其中 col2='2' 和 col3='2012-12-12 12:12:12')插入表(col1,col2,col3)值(1,2,'2012-12) -12 12:12:12')
我假设你知道我想做什么。
我试图在一个语句中或在事务中执行此操作(以避免 2 个用户同时插入同一行的情况)。如果我应该在事务中执行此操作,那么它应该是什么类型的隔离?可序列化隔离会导致锁定表,因此会进一步减慢插入过程。 请帮助我。
最佳答案
如果您不希望 col2 和 col3 对重复(即 col 2 可以有重复项,但任何对 col2 和 col3 只出现一次),您可以指定:
UNIQUE(col2,col3)
现在尝试插入 col2,col3 对的任何查询都将失败。您可以使用以下方法处理此问题:
INSERT IGNORE INTO table(col1, col2, col3) values(1,2,'2012-12-12 12:12:12');
或者如果插入应该更改您可以使用的值:
INSERT INTO table(col1, col2, col3) values(1,2,'2012-12-12 12:12:12')
ON DUPLICATE KEY UPDATE someCol=someVal
关于MySQL,如果不存在则插入行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13906530/