Mysql 中插入数据的语法除了 INSERT INTO
,还有一个 REPLACE INTO
语法,只不过该语法在没有插入数据时是插入,表中有时是替换,并且会更改主键 id
更改主键 id 这个设定,就决定了正常的业务程序是用不到这个语法的,一条数据老改 id 谁受得了。
但是换一种情况就会显得很有用,比如,你就是想要得到每次都变化的 id,举个例子
1 | DROP TABLE IF EXISTS `auto_id`; |
新建一个表,我通过不断的插入相同的 mac_id
字段来获取自增的 id
1 | replace into auto_id(max_id) values (1); |
想要达到这样的效果需要一个条件,想要替换的数据字段需要设为唯一键
1 | UNIQUE KEY `auto_max_id_uindex` (`max_id`) |
REPLACE INTO
一共三种写法分别为
1 | replace into auto_id(max_id) values (1); |
只是为了得到这个自增 id,多少有点脱裤子放屁,不过配合一些算法,我们可以根据表来得到对应的命名空间的 id,详见 Mysql 自动生成 id 算法
