1

CREATE VIEW EVENT_LOCATION( "EVENT_ID"、 "STREET"、 "TOWN")AS SELECT A.EVENT_ID、A.STREET、A.TOWN FROM TBLEVENTLOCATION A JOIN TBLEVENTS B ON A.EVENT_ID = B.EVENT_ID WHERE B.REGION ='South ';

私が実行した場合

SELECT ROWID, STREET, TOWN FROM EVENT_LOCATION 

次に、どのROWIDを取り戻す必要がありますか?

私が尋ねている理由は次のとおりです。データベースには、上記の「パターン」を持つ多くのビューがあります。異なるビューから返されるROWIDは異なるようです。すなわち。A.ROWIDまたはB.ROWIDの両方を取得しています...

更新: 次のビューを使用してこれを解決しました。これは基本的に、ROWIDが正しいテーブルからのものであることを保証します。返信ありがとうございます!

CREATE VIEW EVENT_LOCATION ("EVENT_ID", "STREET", "TOWN") AS
  SELECT A.EVENT_ID, A.STREET, A.TOWN
  FROM TBLEVENTLOCATION A
  WHERE A.EVENT_ID IN (SELECT EVENT_ID FROM TBLEVENTS WHERE REGION = 'South');
4

2 に答える 2

1

ORA-01445を取得するので、使用するテーブルのいずれもキーを保存しない場合、キーを保存するテーブルの 1 つの行 ID が返されると思います。複数のテーブルがキーを保持している場合、どうなるかわかりません。

于 2010-07-16T14:14:53.923 に答える
1

見てみる

select * from user_updatable_columns where table_name = 'EVENT_LOCATION'

更新可能な列は、オラクルが子であると言うテーブル(したがって行ID)を示す必要があります。

複数テーブル クラスタを使用する場合 (一般的ではありませんが、可能です)、同じクラスタ内の異なるテーブルが同じ ROWID を持つレコードを持つことができることに注意してください。

個人的には、(a) コード内で ROWID を使用しないこと、および (b) 使用する場合evt.rowid evt_rowidはビューに明示的な列を含めることをお勧めします。

于 2010-07-19T01:27:35.293 に答える