性格いい人が優勝

オラクル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_仕入先(仕入先コード);

ほかにもいろいろ試したのですが
にっちもさっちもいかないのでよろしくお願いします。

A 回答 (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 文には全角スペースが入っているので、半角スペースに直してから貼り付けてください。

この回答への補足

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

補足日時:2006/04/19 11:07
    • good
    • 0

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_仕入先(仕入先コード));
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/19 11:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!