MySQL记录存在则更新,不存在则插入

CREATE TABLE `phpqrelation` (
  `rid` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userId` varchar(30) DEFAULT NULL COMMENT '用户域账号',
  `userCode` varchar(30) DEFAULT NULL COMMENT '工号',
  `userName` varchar(30) DEFAULT NULL COMMENT '用户姓名',
  `objectCode` varchar(30) DEFAULT NULL COMMENT '投票对象员工号',
  `objectName` varchar(30) DEFAULT NULL COMMENT '被评人姓名',
  `relation` int(1) DEFAULT NULL COMMENT '关系:0-上级,1-平级,2-下级,3-自评',
  `isValid` char(1) DEFAULT NULL COMMENT 'Y-有效,N-无效',
  `addTime` datetime DEFAULT NULL COMMENT '添加时间',
  PRIMARY KEY (`rid`),
  KEY `idx_phpqrelation_userId` (`userId`),
  KEY `idx_phpqrelation_objectCode` (`objectCode`),
  UNIQUE KEY `update_or_insert` (`userCode`,`objectCode`)  
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;


userCode和objectCode成为唯一标识,此表为中间表userCode,与objectCode确定relation

当该表中存在userCodeobjectCode的记录时,更新relation,否则插入一条新的记录,SQL语句如下:


insert into phpqrelation (userId,userCode,userName,objectCode,objectName,relation,isValid)values('zhangsan','11111','张三','11112','李四','0','Y') ON DUPLICATE KEY UPDATE relation=VALUES(relation);

此sql的意思判断是否存在userCode为11111,objectCode为11112的记录,存在则更新relation为VALUES(relation),否则插入新的记录.

 

注意:使用该方法,建表的时候要定义 UNIQUE KEY `update_or_insert` (`userCode`,`objectCode`),这样才能保证语句能够正常执行。


你可能感兴趣的:(数据库)