SQL语句问题 根据SELECT 的结果来UPDATE,同时要得到SELECT的结果
1. 我有一个数据库,表里面存的是一个资源,资源是否使用有一列是否为空来表示。然后谁要申请资源,我会先得到第一个不为空的列,再把这一列数据标记为非空。同时要返回刚修改数据中的一项值。
1.如果写成一条SQL:
"update my_table set col1=?, time=NOW where id in (select TOP 1 id from my_table " +
" where col2 is NULL ORDER BY id )";
这样的话,达到我的功能,但我取不出刚刚被update 这一项的ID;
2.如果写成二条语句:
A得到结果. select TOP 1 id from my_table where col2 is NULL ORDER BY id
B: update my_table set col1=?, time=NOW where id = select_id;
先执行A再执行B,我的程序是多线程的,这样会不会在我没有update的时候又有另一个线程又来执行A,这样还是我手工加锁同步,数据库有没有机制来保证这种事情?我用的是 HSQLDB