7

私はOracle 11gを使用しています。
私は1つのテーブルを持っています:

create table test (one number(2), two number(2));

次の 2 つの行があります。

insert into test (one, two) values (1, 1);
insert into test (one, two) values (2, null);
commit;

次に、例外テーブルを作成します。

create table exceptions(row_id rowid,
                       owner varchar2(30),
                       table_name varchar2(30),
                       constraint varchar2(30));

次に、テスト用の主キーを作成します。

alter table test add constraint test_pk primary key (one, two) exceptions into exceptions;

もちろん、次のエラーが発生します: ORA-01449

しかし、例外の原因となった行は例外テーブルにありませんか?

誰でも私を助けることができますか?前もって感謝します

ヴォルフガング

4

1 に答える 1

9

これを行うには、最初に無効な制約を作成する必要があります。

ALTER TABLE test ADD CONSTRAINT test_pk PRIMARY KEY (one, two) DISABLE;

次に、例外付きの制約を有効にします。

ALTER TABLE TEST ENABLE CONSTRAINT test_pk EXCEPTIONS INTO exceptions;

次に、結果を選択できます。

SQL> SELECT * FROM EXCEPTIONS;

ROW_ID             OWNER TABLE_NAME CONSTRAINT
------------------ ----- ---------- ----------
AAHpV4AAHAAApliAAB XXX   TEST       TEST_PK
于 2012-06-26T17:18:07.043 に答える