2012-03-19 26 views
1

DBで生成された主キーを使用してOracle Viewを作成できますか?シーケンス・オブジェクトから生成されたID付きデータベース作成ID付き

IDをSequenceオブジェクトからDB生成IDとしてビューを作成したいとします。

あなたはまさにそれを行うことはできませんが、このような何かを行うことができます
+4

VIEWは単なるSQL文です。ビューに対してクエリを実行するたびに同じIDを保持しますか?そうであれば、まずこの値をテーブルに格納する必要があります。 – Randy

答えて

3

select rownum, field1, field2 
    from... 

ROWNUMのはまさにそれを保持しているaoutogeneratedフィールドですが、それはレコードを注文する前に割り当てられているので、あなたが持っている場合ORDER BY句を使用する場合は、これを行う必要があります:

Select rownum, * 
    from (select .... 
     order by ....) 
+1

Randyがすでに述べたように、アイテムに常に同じIDが必要な場合は、テーブルにIDを保持する必要があります。これは単に、データベースの現在の内容に基づいてオンザフライで番号を割り当てるだけです。それを主キーと比較するのは非常に誤解を招きます。 –

+0

私はHibernateを自分のORMとして使用しており、Hibernateはどのエンティティ(この場合はビューであるエンティティ)に対してID(プライマリキー)を必要としているので、これが必要になりました。 – mandy

+0

@mandy - しかし、鍵は永続的なものでなければならないだろうか?そして、このキーは、ビュー内の 'UPDATE'行のようなことをするために使われます。ビューでキーを生成すると、これらの目的の両方が無効になります。 –