• ベストアンサー

FOREIGN KEYの書き方

オラクル9iを使っています たとえば ☆MST_商品テーブル        ・商品コード  varchar2(10) 主キー  ・分類区分   varchar2(10)  ・商品名称   varchar2(30)  ・仕入先コード varchar2(10) ☆MST_仕入先テーブル  ・仕入先コード varchar2(10)主キー  ・仕入先名称  varchar2(30)    ・取引区分   varchar2(30) があったとして 商品テーブルの仕入先コードと仕入先テーブルの仕入先コードにFOREIGN KEYを使ってリレーションを張りたい場合どのようにSQL文は書いたらいいのでしょうか? ☆CREATE TABLE MST_仕入先    (仕入先コード varchar2(10) NOT NULL,     仕入先名称 varchar2(30), 取引区分 varchar2(30), ALTER TABLE MST_仕入先 ADD CONSTRAINT PMST_仕入先 PRIMARY KEY(仕入先コード); と CREATE TABLE MST_商品 (商品コード varchar2(10),     分類区分 varchar2(10)     商品名称 varchar2(30), 仕入先コード varchar2(10), ALTER TABLE MST_商品 ADD CONSTRAINT PMST_商品 PRIMARY KEY(商品コード); でテーブルと主キーを設定し ALTER TABLE MST_商品 ADD CONSTRAINT FMST_商品 FOREIGN KEY(仕入先コード) REFERENCES MST_仕入先(仕入先コード); ほかにもいろいろ試したのですが にっちもさっちもいかないのでよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.2

CREATE TABLE MST_仕入先 (   仕入先コード varchar2(10) NOT NULL,   仕入先名称 varchar2(30),   取引区分 varchar2(30),   CONSTRAINT PMST_仕入先 PRIMARY KEY(仕入先コード) ); CREATE TABLE MST_商品 (   商品コード varchar2(10),   分類区分 varchar2(10)   商品名称 varchar2(30),   仕入先コード varchar2(10),   CONSTRAINT PMST_商品 PRIMARY KEY (商品コード),   CONSTRAINT FMST_商品 FOREIGN KEY (仕入先コード) REFERENCES MST_仕入先 ); または、 CREATE TABLE MST_仕入先 (   仕入先コード varchar2(10) NOT NULL,   仕入先名称 varchar2(30),   取引区分 varchar2(30) ); ALTER TABLE MST_仕入先 ADD   CONSTRAINT PMST_仕入先 PRIMARY KEY(仕入先コード) ; CREATE TABLE MST_商品 (   商品コード varchar2(10),   分類区分 varchar2(10)   商品名称 varchar2(30),   仕入先コード varchar2(10) ); ALTER TABLE MST_商品   CONSTRAINT PMST_商品 PRIMARY KEY (商品コード) ; ALTER TABLE MST_商品   CONSTRAINT FMST_商品 FOREIGN KEY (仕入先コード) REFERENCES MST_仕入先 ; ※なお、サンプル SQL 文には全角スペースが入っているので、半角スペースに直してから貼り付けてください。

risarisa6533
質問者

補足

entreeさん解答ありがとうございます。 上記のように教えていただいたようにして実行すれば 上手くいきました。 もう一つお聞きしていいですか?? オラクルにおいてリレーションで関連性をつける際には 子→親で子テーブル文にFOREIGNKEYを書くだけでよいのでしょうか??(例えば親子両方のテーブル文にFOREINGKEYを書くとか・・・は必要でしょうか?) また他のテーブルも同じように仕入先コードを外部キーにしようとすると「他の制約で使われている」って感じのメッセージがでるのですが・・・ 回答の方よろしくお願いします。

その他の回答 (1)

  • 0026813
  • ベストアンサー率50% (2/4)
回答No.1

risarisa6533さんのSQLで正しく参照整合性が設定できましたが、何が問題なんでしょう? (カンマやセミコロンを多少変更しましたが・・・) もし何らかのエラーが出るようでしたら、下記のSQLを試してみて下さい。 (単にCreateTable文中に設定を集めただけですが・・・) CREATE TABLE MST_仕入先 (仕入先コード varchar2(10) primary key, 仕入先名称 varchar2(30), 取引区分 varchar2(30)); CREATE TABLE MST_商品 (商品コード varchar2(10) primary key, 分類区分 varchar2(10), 商品名称 varchar2(30), 仕入先コード varchar2(10) CONSTRAINT FMST_商品 REFERENCES MST_仕入先(仕入先コード));

risarisa6533
質問者

お礼

0026813さん回答ありがとうございます。 補足でお聞きしたいことがあるので もしよければ回答の方お願いします。

関連するQ&A