Maison > Article > développement back-end > 只有两行的表如何设置约束?
因为微信公众平台开发需要对access_token和jsapi_ticket进行缓存,所以建立了一个wx_token的表,表有三个字段,两行数据,如下:
| key| content | expire |
| access_token | xxxx | 111111111 |
| jsapi_ticket | xxxx | 111111111 |
只作为缓存,所以每次查询或者修改“content”和“expire”内的内容,“key”内的内容作为标示。
最开始我只是建立这两个表,没有设置主键和约束,但是这样查询和更新都会出现错误。
我的问题是:
1.必须要把key设置成主键吗?
2.不设置主键就没有办法查询和更新吗?(或者说简单的方法)如果有那么该如何建表?
以上。
因为微信公众平台开发需要对access_token和jsapi_ticket进行缓存,所以建立了一个wx_token的表,表有三个字段,两行数据,如下:
| key| content | expire |
| access_token | xxxx | 111111111 |
| jsapi_ticket | xxxx | 111111111 |
只作为缓存,所以每次查询或者修改“content”和“expire”内的内容,“key”内的内容作为标示。
最开始我只是建立这两个表,没有设置主键和约束,但是这样查询和更新都会出现错误。
我的问题是:
1.必须要把key设置成主键吗?
2.不设置主键就没有办法查询和更新吗?(或者说简单的方法)如果有那么该如何建表?
以上。
1、主键就相当于 唯一值+索引 的功能,你key字段的记录往下会有重复吗?你建表的时候忘加或者后期需要主键,可以后期添加的,有索引的话,当你记录数足够多时效率大大提高。(也可以单独创索引)
2、索引除了提高查询速度外,也能提高UPDATE,DELETE,INSERT操作的速度,比如你这里经常会使用:
select * from wx_token where key='access_token';
或者
update wx_token set content='值',expire='值' where key='access_token';
主要看记录数量、哪种DML语句执行的频繁来做决定。
AccessToken 和 Ticket 是有过期时间的,因此不建议使用数据库作为缓存层,可以考虑使用内存缓存(Apc 或 memcached)等。
https://github.com/thenbsp/wechat/blob/master/documentation/accesstoken.md
https://github.com/thenbsp/wechat/blob/master/documentation/ticket.md