iOS 数据存储
2022-12-12 本文已影响0人
夏天爱西瓜汁
使用fmdb
如何封装
创建表
设置主键,主键要求
增:
删:
改:
查:
背景:将用户与人工客服的聊天消息存储下来,可以查询历史记录(一个用户对应多个客服,需要查询当前用户与所有客服的记录)
msgid TEXT PRIMARY KEY
将msgid设为了主键,接收到的消息msgid为后台生成(应该不会有重复吧),用户发出的消息id使用时间戳+会话id+发送方(0为用户,1为客服,2为提示),在用户发送消息和接收客服消息的时候存储到数据库(封装好的类,插入使用的sql是insert or replace)
问题:查到的消息只有一条而且是存的最后一条,被覆盖了?
设置了msgid为主键,使用insert or replace数据会被覆盖,使用insert into,又会报错Unknown error finalizing or resetting statement (19: UNIQUE constraint failed: cft_ucmsg_table.userid),但是主键明明是msgid,为什么错误信息是userid
将userid又拼接了时间戳,存储就没被新的数据覆盖,疑惑,难道userid才是主键?