注册 | 登录
欢迎注册会员

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

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

来源:程序人生 【 】 浏览:1880 添加日期: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