で、MySQL は、トランザクションが使えないということなのですが
例えば、
TALBE1 という名前のテーブルに
ID(int),VALUE(char)
という列があって
IDを、auto increment でない使い方をする場合
select max(ID) from TABLE1;
で取得した値を、newID として保存した後
insert into ID, VALUE values(newID, newVALUE);
で保管する以外に、方法はないもんでしょうか?
トランザクションがないので、重複したIDが投入されそうで気持ち悪くて・・・(まぁ、小規模では、可能性は殆どないと思うのですが)
#最新のバージョンでは、トランザクションが使えるようですが、とりあえず、そうでなかった場合に・・・
単純に1レコードの追加であればエラー
IDをPRIMARY INDEXにして重複キーエラー
で処理した方軽いと思います。
(今回の処理もIDがユニークが前提)
追加する文字が'ADD VALUE'の場合
insert into TABLE1 (ID,VALUE)
select
if(ID is NULL,0,max(ID))+1 as ID,
'ADD VALUE' as VALUE
from TABLE1 for update
を実行した時重複した場合エラーになり
PHPのmysql_errnoでエラーが重複エラー(1062)
ならSQLを再実行する。
http://dev.mysql.com/doc/refman/4.1/en/error-messages-server.htm...