摘要:
下文讲述MySQL数据表操作时,如果存在则更新的操作方法
实验环境:sql serer 2008 R2
在数据表的设计中,通常我们会为数据表加上主键,作为数据更新的条件。
例:
if exists(select null from tableName where keyId =@keyId)
begin
/*更新数据表*/
end
else
begin
/*插入数据表*/
end
这种写法最大的弊端就是,每次操作时,都使用了两条sql脚本,即先判断后运行。
那么在MySQL中,新推出了一个关键字“ ON DUPLICATE KEY UPDATE ”,我们可以使用此关键字达到“数据存在则更新,否则插入的目的”。
ON DUPLICATE KEY UPDATE 关键字的作用
向数据库插入数据时,如果主键值存在,则运行update操作,否则运行插入操作
ON DUPLICATE KEY UPDATE 关键字举例应用
---创建测试表
CREATE TABLE `maomao` (
`keyId` int(11) NOT NULL,
`info` varchar(80) DEFAULT NULL,
PRIMARY KEY (`keyId`)
) ENGINE=InnoDB;
---插入测试数据
INSERT INTO `maomao` VALUES ('1', 'sqlblog');
INSERT INTO `maomao` VALUES ('2', 'sqlserver');
INSERT INTO `maomao` VALUES ('3', 'maomao365.com');
---测试ON DUPLICATE KEY UPDATE关键字
INSERT INTO maomao(keyId,`value`) VALUES(3, 'insertTest') ON DUPLICATE KEY UPDATE `info`='updateTest';
---查询表数据
select * from `maomao`