オラクル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_仕入先(仕入先コード);
ほかにもいろいろ試したのですが
にっちもさっちもいかないのでよろしくお願いします。
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 文には全角スペースが入っているので、半角スペースに直してから貼り付けてください。
この回答への補足
entreeさん解答ありがとうございます。
上記のように教えていただいたようにして実行すれば
上手くいきました。
もう一つお聞きしていいですか??
オラクルにおいてリレーションで関連性をつける際には
子→親で子テーブル文にFOREIGNKEYを書くだけでよいのでしょうか??(例えば親子両方のテーブル文にFOREINGKEYを書くとか・・・は必要でしょうか?)
また他のテーブルも同じように仕入先コードを外部キーにしようとすると「他の制約で使われている」って感じのメッセージがでるのですが・・・
回答の方よろしくお願いします。
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_仕入先(仕入先コード));
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- MySQL テーブル作成時のカラムについて 2 2022/08/27 21:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
orace SQL文のエラー(ORA-0092...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLの書き方について
-
SQLについて教えて下さい。 主...
-
sqlで質問です。 idを元にidに...
-
oracleで 10,20, 30, というデ...
-
索引作成について
-
googleプレイの履歴で取得とイ...
-
sql(oracle)で質問です。 テ...
-
オラクルゴールドについて
-
sqlのupdate文で質問です。 テ...
-
ビットで表せる数値について
-
TOPページ以外の、301リダイレ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
orace 変更表エラーを回避する...
-
年月が連続したテーブルとそう...
-
PL/SQL 条件アップデートについて
-
SELECT文で条件にあったテーブ...
-
こういうDELETE文を作成したい...
-
ORACLEで2つのテーブルを同時に...
-
Oracle SQL 2つのテーブルを使...
-
SQLの作成について
-
同じフィールドから2種類の値を...
-
★アクセス2000★条件付き合計金...
-
SQLを考えてます。
-
こういうSELECTは可能でしょうか?
-
FOREIGN KEYの書き方
-
GROUP BYを行った後に結合した...
-
Oracleでの文字列連結サイズの上限
-
Accessで別テーブルの値をフォ...
-
SELECTで1件のみ取得するには?
-
SQL文で右から1文字だけ削除す...
-
ADO VBA 実行時エラー3021
-
ファイル書込みで一行もしくは...
おすすめ情報