テーブルはこの方法でシステムに作成されました
CREATE TABLE INSTANCES
(
DM INTEGER NOT NULL,
INSTANCEID VARCHAR2(512) NOT NULL,
INSTANCENAME VARCHAR2(64) NOT NULL UNIQUE,
HOSTNAME VARCHAR2(32) NOT NULL,
CONSTRAINT PK_INSTANCES PRIMARY KEY (INSTANCEID, HOSTNAME)
);
新しい create table ステートメントは次のとおりです。
CREATE TABLE INSTANCES
(
DM INTEGER NOT NULL,
INSTANCEID VARCHAR2(512) NOT NULL UNIQUE,
INSTANCENAME VARCHAR2(64) NOT NULL UNIQUE,
HOSTNAME VARCHAR2(32) NOT NULL,
CONSTRAINT PK_INSTANCES PRIMARY KEY (INSTANCEID, HOSTNAME)
);
違いは、INSTANCEID に UNIQUE が含まれていることです。テーブルを変更するにはどうすればよいですか? 以下のステートメントを使用しましたが、うまくいきませんでした。
ALTER TABLE INSTANCES ADD CONSTRAINT ab UNIQUE ( INSTANCEID);
エラーが発生しました: ALTER TABLE INSTANCES ADD CONSTRAINT ab UNIQUE ( INSTANCEID) エラー レポート: SQL エラー: ORA-02261: そのような一意または主キーはテーブル 02261 に既に存在します。 00000 - "そのような一意または主キーはテーブルに既に存在します*原因: 自明。*処置: 余分なキーを削除してください。
上記の必要に応じてテーブルを変更するのを手伝ってください。ありがとう!
これは SELECT con.constraint_name, col.column_name, con.constraint_type FROM user_cons_columns col JOIN user_constraints con ON (col.constraint_name = con.constraint_name) WHERE col.table_name = 'INSTANCES'; の出力です。
"CONSTRAINT_NAME","COLUMN_NAME","CONSTRAINT_TYPE"
"SYS_C0016531","DM","C"
"SYS_C0016532","INSTANCEID","C"
"SYS_C0016533","INSTANCENAME","C"
"SYS_C0016534","HOSTNAME","C"
"PK_INSTANCES","HOSTNAME","P"
"PK_INSTANCES","INSTANCEID","P"
"SYS_C0016536","INSTANCENAME","U"