最近自己做了一个购物车
其中购物车表如下:
CREATE TABLE `cart` (
`id` INT NOT NULL AUTO_INCREMENT,
`cart_id` CHAR(32) NOT NULL,
`goods_id` INT NOT NULL,
`quantity` INT NOT NULL,
`added_on` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;由于考虑到确保主键id在无论何种情况下保持唯一值,所以写插入语句的时候,为id指定的值是UUID()
但是结果在测试的时候,动不动就报主键冲突的错误:
//Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
没有任何规律可循于是暂时不用UUID(),让id自增(不知道理论上有没有可能出现主键冲突,比如正巧都在这一瞬间同时加入购物车...理论上,有可能吗?)这是第一个问题.第二个问题:
加入购物车进行付款的时候,实际上是删除购物车里面的订单,并把订单加入到order表,cart表每天要做数不清的add update delete操作,那cart表的id不是越变越大,这个会有什么隐患吗?请大家帮忙解答一下,或者有成熟的做法,请指教谢谢!
其中购物车表如下:
CREATE TABLE `cart` (
`id` INT NOT NULL AUTO_INCREMENT,
`cart_id` CHAR(32) NOT NULL,
`goods_id` INT NOT NULL,
`quantity` INT NOT NULL,
`added_on` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;由于考虑到确保主键id在无论何种情况下保持唯一值,所以写插入语句的时候,为id指定的值是UUID()
但是结果在测试的时候,动不动就报主键冲突的错误:
//Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
没有任何规律可循于是暂时不用UUID(),让id自增(不知道理论上有没有可能出现主键冲突,比如正巧都在这一瞬间同时加入购物车...理论上,有可能吗?)这是第一个问题.第二个问题:
加入购物车进行付款的时候,实际上是删除购物车里面的订单,并把订单加入到order表,cart表每天要做数不清的add update delete操作,那cart表的id不是越变越大,这个会有什么隐患吗?请大家帮忙解答一下,或者有成熟的做法,请指教谢谢!
解决方案 »
- 小弟做了个新站大家给点建议
- 很多网站打开页面的时候都会出现进度条,进度条达到100%时页面打开,这个效果是怎么实现的啊?
- GET变量丢失+号问题。
- 报错提问
- 有关Squirrel mail的问题!!急死我了,救命啊
- 请问如何将一个数据变量传至下个页面
- php+mysql 分页问题
- 独享带宽1MB的意思是 用户下载服务器的数据最多能达到125KB每秒 但是我想问如果2个用户正在同时下载 是不是应该要减半了
- mysql4 浮点数计算不准确的问题 求帮助
- mysql 中 inner join 和join有什么区别?查了很多文档都没得到准确答案,谢谢!
- 最近一个面试
- 为何用if可以执行但是for不行?
不存在你的这个担忧。因为只有主键才能自增,而主键就必须唯一。这也就是你 UUID() 插入失败的原因第二个问题
当 id 越来越大,直至超越 id 字段所能允许的范围时,将产生主键冲突的错误。
你需要定时重构 id 的初值