[Seasar-user:13993] Re: s2dao と mysql でシーケンスを実現する方法

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2008年 4月 29日 (火) 16:29:17 JST


furukawaです。

以下のファンクションで対応することができました。


CREATE TABLE test_user_id_sequence (
  id INTEGER NOT NULL AUTO_INCREMENT
  PRIMARY KEY(id)
);

create function next_test_user_id() returns int
begin
    declare index_id integer;
    UPDATE test_user_id_sequence SET id = LAST_INSERT_ID(id + 1);
    select LAST_INSERT_ID() into index_id;
    return index_id;
end;

//実行
select next_test_user_id()


LAST_INSERT_ID()は同じコネクション内でしか有効でないため
トランザクションは関係なく使うことができました。


--- [E-MAIL ADDRESS DELETED] wrote:

> furukawaです。
> 
> タイトルが間違っておりましたので、修正いたしました。
> よろしくお願いいたします。
> 
> 
> --- [E-MAIL ADDRESS DELETED] wrote:
> 
> > こんばんは、furukawaです。
> > 
> > mysql
> でシーケンスを実現したいのですが、以下のようなコードをDaoの
> > メソッドとして呼び出す方法はないでしょうか?
> > 
> > トランザクション開始
> > update sequence set id = last_insert_id(id + 1);
> > select last_insert_id();
> > トランザクション終了
> > 
> >
> s2daoでmysqlを使用されている方は、オートインクリメントで生成した後に
> > IDを取得するという方法ととられているようなのですが、
> > できればインサート前にIDを生成したいと考えております。
> > 
> > よろしくお願いいたします。
> > 
> > _______________________________________________
> > Seasar-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-user
> > 
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 



Seasar-user メーリングリストの案内