テストデータをクリーンアップするユーティリティの一部として外部キー制約を回避するために、子テーブルからデータを削除するカスタム Oracle クエリを作成しています。
テーブル 1 (PK - (id1,id2)) とテーブル 2 (FK -(id3,id4)) の 2 つのテーブルがあるとします。ここで、id1、id2、id3、id4 はすべて Number 型です。表 2 には、表 1 の主キーに対する複合外部キー制約があります。これが私が今持っているものです(今選択するだけで、後で削除するように変わります):
select (cast(t2.id3 as varchar2(30)) || ',' || cast(t2.id4 as varchar2(10)))
as new_search from Table2 t2 where new_search in
(select (cast(t1.id1 as varchar2(30)) || ',' || cast(t1.id2 as varchar2(10)))
as new_search from Table1 t1 where t1.someColumn=someValue);
ただし、これを実行すると、ORA-00904 NEW_SEARCH:invalid_identifier が返されます。だから、私の質問は次のとおりです。
(1) ここで何が間違っていますか? (2)これを行うより良い方法はありますか?
ありがとう。