Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL,如果不存在,则插入行_Mysql_Transactions_Insert - Fatal编程技术网

MySQL,如果不存在,则插入行

MySQL,如果不存在,则插入行,mysql,transactions,insert,Mysql,Transactions,Insert,可能重复: 我有问题: 我有一个名为table的表,它有4列:idint、PK、AI、Unique、col1varchar、col2varchar、col3datetime 许多用户可以连接到mysql服务器并将行插入表中。问题是col2和col3不能存在于表的其他行中 我会这样写: 如果不存在,请从表格中选择*,其中col2='2'和col3='2012-12-12 12:12:12'插入表格col1、col2、col3值1,2、'2012-12-12:12:12' 我想你知道我想做什么 我

可能重复:

我有问题:

我有一个名为table的表,它有4列:idint、PK、AI、Unique、col1varchar、col2varchar、col3datetime

许多用户可以连接到mysql服务器并将行插入表中。问题是col2和col3不能存在于表的其他行中

我会这样写: 如果不存在,请从表格中选择*,其中col2='2'和col3='2012-12-12 12:12:12'插入表格col1、col2、col3值1,2、'2012-12-12:12:12'

我想你知道我想做什么

我试图在一条语句中这样做,以避免出现两个用户同时或在事务中插入同一行的情况。如果我应该在事务中这样做,那么它应该是什么类型的隔离?可序列化隔离会导致锁表,所以它可以大大降低插入过程的速度。
请帮帮我。

如果您不希望col2和col3对重复,即col2可以有重复项,但任何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

但这不是我说的。还有其他几个。我们最经常重复出现的问题之一。如果不一样,请说明.col2和col3不能是唯一的。col2或col3可以复制。我不能复制col2和!!!col3如果同一行中存在相同的2列!“这正是我要找的。”PawełAdamczyk很高兴我能帮上忙: