james_pizza 2004年12月22日
问一个数据库操作的经典问题 ^_^
假如我有一表,表中有个字段m_nID是一个标示字段,并且是自增的。

当我对这张表插入新的纪录的时候:

CMySet set; //CMySet public from CRecoderSet,specialed for the table ^-^
set.open()
set.AddNew()
//fill other field but not the m_nID
set.m_m_strName="James";
set.m_m_nOld=23;
//OK,now let's update
set.Update()
set.close();

问题是:我想获得我这条刚刚添加的纪录的m_nID值,该如何做呢?
土办法:在上面的代码后面,加上:
set.open();//reopen it
set.MoveLast();//move to last record -_-!
int nResult=set.m_nID;//so get the m_nID i want.
set.close()
这样的做法在单一用户的情况下,是觉得没有问题的。但是如果时多用户并发的时候就会有问题。
可能会出现,获得的ID不是我刚刚添加的,而是别人刚刚添加的!

另一个办法:
利用SQL:
INSERT INTO jobs (job_desc,min_lvl,max_lvl)
VALUES ('Accountant',12,125)
SELECT @@IDENTITY AS 'Identity'
但是,显然这两条SQL也是有先后的。

请大家帮助我,谢谢。
...全文
182 点赞 收藏 9
写回复
9 条回复

还没有回复,快来抢沙发~

发动态
发帖子
数据库
创建于2007-09-28

3443

社区成员

3.9w+

社区内容

VC/MFC 数据库
社区公告
暂无公告