Mah*_*hdi 4 mysql innodb replace
让说我有一个包含三列的MySQL表:id,a并b与指定的列id是一个AUTO INCREMENT字段.如果我将以下查询传递给MySQL,它将正常工作:
REPLACE INTO `table` (`id`, `a`, `b`) VALUES (1, 'A', 'B')
Run Code Online (Sandbox Code Playgroud)
但是,如果我跳过这个领域id它将不再有效,这是预期的.
我想知道查询中是否存在ignore某些字段的方法REPLACE.所以上面的查询可能是这样的:
REPLACE INTO `table` (`a`, `b`) VALUES ('A', 'B')
Run Code Online (Sandbox Code Playgroud)
为什么我需要这样的东西?
有时我需要使用查询检查数据库SELECT以查看是否存在行.如果它存在,那么我需要UPDATE现有的行,否则我需要INSERT一个新的行.我想知道我是否可以通过单个REPLACE查询获得类似的结果(但不相同).
为什么它不能是相同的结果?很简单,因为REPLACE将DELETE在现有行和将INSERT新行,这将失去当前primary key并会增加自动递增值.相反,在一个UPDATE查询primary key和AI字段将保持不变.
MySQL REPLACE.
primary key值时才使用替换.手册:
请注意,除非该表具有PRIMARY KEY或UNIQUE索引,否则使用REPLACE语句是没有意义的.它等同于INSERT,因为没有索引可用于确定新行是否与另一行重复.