我用的是mysql 数据库,
表:table_spID num name
1 1 主板
上面这个表有1条信息,我现在同时在线N个人去抢购这个物品,我想有个 判断 num数量 如果等于0 就代表该物品已经被抢购到了,如果通过程序判断,先查询table_sp这个表,查询出来num(数量)这个字段,在判断
if(num==0){
被抢购
}else{
没有被抢购
}
如果通过上面的方法,但是现在问题来了,同时在线人很多,很有可能2个人的时间是完全一样的,所以通过这样的判断就不可行了。所以应该在数据库 做下判断 ,大家帮帮忙啊。
表:table_spID num name
1 1 主板
上面这个表有1条信息,我现在同时在线N个人去抢购这个物品,我想有个 判断 num数量 如果等于0 就代表该物品已经被抢购到了,如果通过程序判断,先查询table_sp这个表,查询出来num(数量)这个字段,在判断
if(num==0){
被抢购
}else{
没有被抢购
}
如果通过上面的方法,但是现在问题来了,同时在线人很多,很有可能2个人的时间是完全一样的,所以通过这样的判断就不可行了。所以应该在数据库 做下判断 ,大家帮帮忙啊。
如果是InnoDB,加入FOR UPDATE,且必须在交易区块(BEGIN/COMMIT)中才能生效
引擎?? 这个 怎么查看呢,我对mysql不是很熟悉,谢谢了。
查询的时候出现错误。ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'SHOW
CREATE TABLE test' at line 2
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------+
| Table | Create Table
|
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------+
| test | CREATE TABLE `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET gb2312 NOT NULL,
`sex` varchar(2) CHARACTER SET gb2312 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
------------+
1 row in set (0.13 sec)查询出啦了。
SELECT * FROM 列名 FOR UPDATE 试试
ERROR 1146 (42S02): Table 'test.num' doesn't exist
报错了。
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html