0

入れ子になったテーブルに主キーと外部キーを追加しようとしていますが、どうすればよいかわかりません。

これは私が持っているものです。

create or replace type profile as object 
(
id VARCHAR2(10), --- Suppose to be Primary Key
userID VARCHAR2(10) --- Suppose to be Foreign Key for user table
);

create or replace type profile_nest as table of profile;

CREATE OR REPLACE TYPE user_t UNDER group_T
(profile profile_nest_ty,);


CREATE TABLE user OF user_t
(id NOT NULL,
PRIMARY KEY (id), 
nested table profile store as profile_storage_tbl;

問題はこの部分で、外部キーを実行しようとしています -

alter table profile_storage_tbl add CONSTRAINT fk_userID FOREIGN KEY (userID)
REFERENCES user(id);

このエラーが発生します-

*コマンドの 3 行目から始まるエラー:
alter table profile_storage_tbl add CONSTRAINT fk_userID FOREIGN KEY (userID) REFERENCES user(id)
エラー レポート:
SQL エラー: ORA-30730: ネストされたテーブル列 30730 では参照制約は許可されていません。 00000 - "参照制約ネストした表の列では使用できません"
*原因: ネストした表の列に参照制約を定義しようとしました。
処置: ネストした表の列に参照制約を指定しないでください。

4

3 に答える 3

1

例外テキストが示すように、ネストされたテーブル列に外部キー制約を作成することは許可されていません (Oracle 11)。

ここで説明されている回避策があります: http://ksun-oracle.blogspot.com/2011/05/foreign-key-on-nested-table.html。ただし、これが次のオラクルのリリースで機能するという保証はありません。

于 2012-01-26T14:39:22.040 に答える
1

2 つの別個のテーブルprofile_storage_tblを作成しuser、その間に外部キーを配置するprofile_storage_tblテーブル内にネストされたテーブルとして作成しuserます。両方をやろうとしても意味がありません。(実際、ネストされたテーブルは私にはほとんど意味がありませんが、それは別の問題です!)

于 2012-01-26T14:31:35.860 に答える