注册 | 登录
欢迎注册会员

当前位置:首页 > 数据库 > MYSQL数据库 > 正文

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

来源:程序人生 【 】 浏览:1929 添加日期:2011-10-26 08:45:00 我要评论(0)
SQL Code复制内容到剪贴板
  1. Create TABLE `tb_file_authorize` (   
  2.   `authorize_id` int(11) NOT NULL auto_increment,   
  3.   `str_id` int(11) default NULL COMMENT '用户标识',   
  4.   `file_id` int(11) default NULL COMMENT '文件标识',   
  5.   `right_id` int(11) default NULL COMMENT '权限标识',   
  6.   `catalog_id` int(11) default NULL COMMENT '目录标识',   
  7.   `catalog_index` varchar(100) character set utf8 collate utf8_bin default NULL COMMENT '目录索引标识',   
  8.   `expired_date` varchar(30) default NULL COMMENT '过期时间',   
  9.   `limit_times` int(11) default NULL COMMENT '限制次数',   
  10.   `open_times` int(11) default NULL COMMENT '已经打开次数',   
  11.   `start_date` varchar(30) default NULL COMMENT '开始时间',   
  12.   `end_date` varchar(30) default NULL COMMENT '结束时间',   
  13.   `grant_user` varchar(30) default NULL,   
  14.   PRIMARY KEY  (`authorize_id`),   
  15.   KEY `file_right_index` (`str_id`,`file_id`),   
  16.   UNIQUE KEY `update_or_insert` (`str_id`,`file_id`)   
  17. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

我遇到的问题:

   str_id标识用户的唯一标识,fiile_id为文件的唯一标识,此表为中间表str_id,与file_id确定right_id

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

SQL Code复制内容到剪贴板
  1. Insert into tb_file_authorize(str_id,file_id,right_id,catalog_id,catalog_index)   
  2. values ('35','20','2048','1','1'ON DUPLICATE KEY Update right_id='1024'   

此sql的意思判断是否存在str_id为30,file_id为20的记录,存在则更新right_id为1024,否则插入新的记录.

 

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


你浏览的文章是 - 《MySQL记录存在则更新,不存在则插入》!
文章出处:https://www.procedurelife.com/content/akkjah.html
100% (1)
0% (0)
评论0
游客
1 2