• 締切済み

DBFlute でシーケンス値取得

現在 DBFlute + Oracle で、学習を進めているのですが、 シーケンス(Sequence)についてわからない点がございます。 sequenceDefinitionMap.dfprop ファイルに、テーブルにひもづく Sequenceを1つ設定できるのはわかったのですが(主キー用など)、 1テーブルに対して複数のSequenceを設定できないのでしょうか。 主キーだけでなく、その他のカラムにもシーケンス値を 利用したい場合はどのように記述するのでしょうか。 (まさか外だしSQLにしないといけない?) ご存知の方がいらっしゃれば、ご教示よろしくお願いいたします。

  • Java
  • 回答数1
  • ありがとう数2

みんなの回答

noname#241087
noname#241087
回答No.1

>Sequenceを1つ設定できるのはわかったのですが(主キー用など)、 >1テーブルに対して複数のSequenceを設定できないのでしょうか。 1つのテーブルに主キー用に1つしか設定できないと思います。 >主キーだけでなく、その他のカラムにもシーケンス値を >利用したい場合はどのように記述するのでしょうか。 >(まさか外だしSQLにしないといけない?) 外だしSQLを使うことになると思います。 Seasar-userメーリングリストでDBFluteの開発者に直接たずねてみるのが、一番確実でしょう。

hatimiti
質問者

お礼

ご回答ありがとうございます。 やはり外だしSQLになりそうですか。 >Seasar-userメーリングリストでDBFluteの開発者に直接たずねてみるのが、一番確実でしょう。 メーリングリストで質問したことがないので不安ですが、 登録して投稿してみます。 ありがとうございました。

関連するQ&A

  • カラム情報取得方法

    テーブル内のカラム情報を取得するにはどのようなSQLを作ればよいのでしょうか? 欲しい情報は「カラム名・主キーかどうか・データ型・桁数・NULLを許容かどうか」の5つとなります。 SQL Server は2005と2008を使用していて、どちらでも扱えるSQLがあると助かります。 どうぞ宜しくお願いいたします。

  • シーケンスを使わずに主キーを発行したい

     お世話になります。  今まで主キーの発行はシーケンスを使っていましたが、 シーケンスだと飛び番が発生するので、それ以外の方法を探しています。  データ追加時に(select max(主キー) + 1)で発行した所、複数人数で使用するDBの為 稀にタイミングによっては同じ番号を拾ってきてしまい、「主キーが重複しています」のエラーが出てしまいます。    主キーを安全に発行するのに、みなさん、どのような方法でされているのでしょうか?  googleで検索をしてみましたが、意外と見つからないです。  どなたかご教示いただけると助かります。

  • トリガーとシーケンスについて

    DBはOracle9i(Ver9.2.0.1かな?)です。 テスト環境から本番環境にデータ移行する際に テーブルも変更を加えました。 すると変更を加えたテーブルに関連するトリガーが未コンパイル状態になってしまいました。 仕方なく、再コンパイルするとトリガーに記述のあるシーケンスの最終番号が若干ずれていました。 コンパイルすることによってずれることがあるのでしょうか? シーケンスは初期化されたわけではなく、若干ずれてるだけです。 そのシーケンスを使用して登録処理を行っているので一意制約違反がでまくりです。 どなたかアドバイスお願いします。

  • MINUS の結果の rowid を取得したい

    テーブル A, A@other のデータの全カラムの MINUS の結果を取得しその結果レコードの rowid を 取得する方法を検討しています。 A, A@other は異なるインスタンスの同一定義のテーブルです。 このとき、動的SQL を使用し テーブ ルA, A@other には任意のセットが入ります。 対象のテーブルには主キーが無い場合が有ります。 このような時に期待した結果を効率良く取得する方法をご教示下さい。 環境は Oracle 9iR2 (Miracle Linux 4)を使用しています。

  • oracle sequence

    oracleのシーケンスでdual表からselect文のnextvalで取得したものをインサート したいのですが、ループ内で上記処理を複数回行ったときに、値が一回目以降 更新されずに困っています。 例) for (i=0;i < 5){ (1)セレクト文発行しシーケンスを取得。 (2)取得したシーケンスを変数にセット (3)インサート実行(主キーに取得したシーケンスをセット) } こんな感じで実行したときに、はじめはシーケンスが+1されますが、 それ以降シーケンスが増加しません。そのため、重複エラーが発生してしまいます。。。 どのように対処したらよいのかまったく見当がつきません。 大変申し訳ないのですが、ご教示いただきたくよろしくお願い申し上げます。

  • 複合キーの設定エラー

    お世話になります。 SQLserver2005 であるテーブルに複合主キーを設定しようとしているのですが以下エラーが出て設定できません。どこの設定を変更すればいいのかご教示いただけれたらと思います。 マネジメントスタジオで対象テーブルのカラム二つを選択し、主キー設定ボタンを押す。 ↓ メッセージ『インデックスまたは主キーのサイズは900バイトまでです』 ★列プロパティのサイズはそれぞれ510となっておりましたがここが原因でししょうか?(二つを足すと900以上だから??しかし変更の仕方も分かりません。1つのカラムだけですと設定できるのですが。。。) ちなみにこのテーブルにインデックスはまだ設定しておりません。 何卒宜しくお願い致します。

  • 異なるキーで取得したデータの合成

    SQLに関して質問です。 以下のようなテーブルA、Bがあった場合、 【テーブルA】  カラム1  カラム2  ------------------------  AAA   CCC  BBB   DDD 【テーブルB】  カラム3  カラム4  ------------------------  AAA   1  BBB   2  CCC   3  DDD   4 次のような結果を得るにはどのようなSQL文を記述すれば良いでしょうか? 【求める結果】  カラム1  カラム2 カラム4(1) カラム4(2)  ---------------------------------------------------  AAA   CCC    1      3  BBB   DDD    2      4 非常に初歩的な質問かもしれませんが宜しくお願いいたします。

  • リンクサーバー接続先の参照エラーについて

    お世話になります。 [SQL Server 2005]から[Oracle 10g]に対し、リンクサーバーを設定いたしました。 このリンクサーバー越しにテーブルを参照した所、参照できるテーブルとできないテーブルが、 起こってしまいました。 参照不可なテーブルを参照しようとしますと、 「メッセージ 7442、 レベル 16、状態 1、行 1 リンク サーバー "hoge" の OLE DB プロバイダ "MSDAORA" から返されたテーブル ""AAA"."BBB"" のインデックス定義が無効です。」 が、出てしまいます。 尚、このテーブルには主キーが設定されておりません。ユニークキーのみ設定されております。 [Oracle 10g]側のテーブル定義を変更することができませんので、何とか[SQL Server 2005]側での 対応方法をご存知の方は、ご教授頂けませんでしょうか。 ※主キーの張られておりますテーブルに対しては問題なく参照が行えます。 ご回答に際しまして補足が必要でしたら、お申し付け下さい。 よろしくお願いいたします。

  • 重複レコードの取得

    すみません。。重複レコードの取得方法に困っています。 やりたいのは以下です。 テーブルA 項目1| 項目2| 項目3| 11 | 11 | 01 | 12 | 11 | 02 | 13 | 11 | 04 | 14 | 11 | 04 | 上記の項目1は主キーです。 抽出したいのは下記のみです。 項目1| 項目2| 項目3| 13 | 11 | 04 | 14 | 11 | 04 | 色々SQLを組んで試しては見てるのですが。。。。 select * from テーブル where ((項目3) in (SELECT 項目3 FROM テーブル GROUP BY 項目3 having count(*)>1)) 上記SQLだと項目3を主キーごとにカウントしてるみたいなので 意図した結果が抽出されないのです・・・・・。 項目2と項目3を結合して重複のチェックをすればよいのか?? とも思いますがSQL自体が1本で完結したいので よく分からなくなってしまいました。。。。。 皆さんご教示宜しくお願い致します。

  • SQL 主キーによる自動的な表の結合

    複数の表を主キーで結合する際、そのままWHERE句に条件を列挙するのが普通ですが、 主キーの数が多いので、これを簡単に記述方法はないでしょうか? できれば Natural Join のようにテーブル名のみを記述し、 DBMS(Oracle)が主キーのみを自動的に結合してくれればベストです。 Natural Join を使用できない理由の1つは、複数の表に登録日という列があり、 Natural Joinすると主キーでない登録日まで結合してしまうからです。 SQLは次のようになっています SELECT * FROM TBL_A NATURAL JOIN TBL_B NATURAL JOIN TBL_C ... ※join using, join on 句は使用できないようです。 ※登録日の列名は変更できません。 Oracle Database 9.2.0.4

専門家に質問してみよう