1. CREATE TABLE
2. int(11) NOT NULL
3. int(11) default NULL COMMENT '用户标识',  
4. int(11) default NULL COMMENT '文件标识',  
5. int(11) default NULL COMMENT '权限标识',  
6. int(11) default NULL COMMENT '目录标识',  
7. varchar(100) character set utf8 collate utf8_bin default NULL COMMENT '目录索引标识',  
8. varchar(30) default NULL COMMENT '过期时间',  
9. int(11) default NULL COMMENT '限制次数',  
10. int(11) default NULL COMMENT '已经打开次数',  
11. varchar(30) default NULL COMMENT '开始时间',  
12. varchar(30) default NULL COMMENT '结束时间',  
13. varchar(30) default NULL,  
14. PRIMARY KEY
15. KEY
16. UNIQUE KEY
17. ) ENGINE=InnoDB DEFAULT



 

我遇到的问题:

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

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

 


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`),这样才能保证语句能够正常执行。