私はテーブルt1
とテーブルt2
を持っています。テーブルt1
のように、プライマリ制約は無効状態になります。一次制約は列C1,C2
にあり、テーブルt2
には制約がありません。ROWIDを比較するには
任意の例外がある場合、私はテーブルt1
に主要な制限PK_test
を有効にしようとすると(レコードが制約に違反する)は、以下のように列c1,c2
を持つことになりますテーブルt2
.Table t1
に保存されます。
C1 C2 ROWID
1 2 ABCD
1 2 ABCE
1 2 ABCF
7 8 ABCI
とテーブルt2
PK
に違反するだけで、これらの行は、だから私は列C1,C2
用テーブルt2
でのみmin(ROWID)
を維持したいので、データ
ROWID
ABCD
ABCE
ABCF
でカラムROWID
を持つことになります。 だから私は、クエリ
delete *
from t2
where ROWID not in(select min(ROWID)
from t1
where ROWID in (select ROWID
from t2)
group by C1,C2);
を書かれている。しかし上記のクエリも正しく1 ROWS(ABCD)
を返すselect min(rowed)..
クエリをNULLを書いています。
ここで間違っている箇所を見つけるのを手伝ってください。ここで
'ROWID'は実際にテーブルの列ですか、[ROWID疑似列](https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns008.htm)を参照していますか?私はここで少し混乱している。 –
私はROWID擬似列 – teepu
OKを参照しています。テーブル 't2'は実際の列' ROWID'を持っていますか? 't2.rowid'の名前を変更することをお勧めします。これがOracleの内部ROWIDを妨げるかどうかはわかりません。 –