用 replace 代替 insert 用,可要当心呀,下面的情况,本来两条记录,replace后,变成一条了.
mysql> select * from tmp1;
+----+------+------+
| f1 | f2 | f3 |
+----+------+------+
| 2 | 999 | uuuu |
| 3 | 5 | pppp |
+----+------+------+
2 rows in set (0.00 sec)mysql> replace tmp1 select 2,5,'mmmm';
Query OK, 3 rows affected (0.02 sec)
Records: 1 Duplicates: 2 Warnings: 0mysql> select * from tmp1;
+----+------+------+
| f1 | f2 | f3 |
+----+------+------+
| 2 | 5 | mmmm |
+----+------+------+
1 row in set (0.00 sec)mysql>
mysql> select * from tmp1;
+----+------+------+
| f1 | f2 | f3 |
+----+------+------+
| 2 | 999 | uuuu |
| 3 | 5 | pppp |
+----+------+------+
2 rows in set (0.00 sec)mysql> replace tmp1 select 2,5,'mmmm';
Query OK, 3 rows affected (0.02 sec)
Records: 1 Duplicates: 2 Warnings: 0mysql> select * from tmp1;
+----+------+------+
| f1 | f2 | f3 |
+----+------+------+
| 2 | 5 | mmmm |
+----+------+------+
1 row in set (0.00 sec)mysql>
有的表,有主键,同样也有 唯一键 呀.
所以,我的表设计是合理的.
这个结果也是合法的.我的意思是说,用 replace 取代 insert 时,要慎重呀,否则,会丢记录呀.