テーブルの中には通常、Primary Key および Foreign Keyが設定されていると思いますが、あるテーブルの中でどれがPrimary Key および Foreign Keyとされているのか見れるSQLコマンドって、あるのでしょうか、教えてください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

Primary Key(主キー制約)、Foreign Key(参照整合性制約)は共にデータ整合性をチェックする為の「制約」です。


それらはCreate tableやAlter tableというSQL構文で作成することは出来ますが、どの列に設定されているか参照する為のSQL文はありません。
Oracleの場合、User_ConstraintsやUser_Cons_columnsの「データディクショナリ」表をSelect文で表の情報(もちろん制約の情報も)がわかります。
例:Select * from User_Constraints;
他のデータベース(SYBASEとかSQLSERVERとか)は違うかもしれないので確認した方が宜しいと思います。
    • good
    • 0
この回答へのお礼

pcg733さんのおっしゃるとうり確認してみたところ、データディクショナリ表を見つけることができました。助かりました、ありがとうございます。

お礼日時:2001/03/14 16:17

どのデータベースを使用しているのかわからないのですが、もし「SQLServer」であれば、


 sp_help <テーブル名>
で、テーブルの構成情報が表示されます。
    • good
    • 1

Kchanさんゴメンナサイ。


わたしが知る限りそのようなコマンドはありません。
でも、特定のデータベースにはそのデータベース特有のコマンドとしてある可能性はあります。
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qテーブル作成後なんですが、Primary Keyをスクリプトで追加したい

Windows2000でSQLServerを使用しています。

テーブルは作成したのですが、後からある項目にPrimary Key を
エンタープライズマネージャを使用せず、スクリプトで追加したいのですが、
構文がわかりません。
どなたか教えていただけませんでしょうか。
よろしくお願いいたします。

Aベストアンサー

あけましておめでとうございます。
遅くなりましたが再度。

現在、自由にいじれるSQLServerの環境がないので、動作確認はしてないのですが、ちょこっと調べた感じだと、補足の内容はできないようです。
一度DropしてからAddしないとダメ、のようなこと書いてありました。
もしかしたら調べ方が悪いのかも、ですがあまり可能性はなさそうです。

お力になれなくてすみません。

参考URL:http://www.users.gr.jp/

QPostgreSQL : 多値従属性(第四正規化)のprimary key 設定

一つの項目の主キーを指定する際、
例えば
day date primary key
と指定しますよね。

2つの項目を1つとし、主キーを指定する記述の仕方がわかりません。

確かOracleでは,例えば
(n_code,s_code)primari key
でしたっけ??あまり自信がないですが、こんなような記述の仕方を
していたような覚えがあります。

よろしくお願い致します。

Aベストアンサー

たとえば...

CREATE TABLE hoge (
n_code INTEGER,
s_code INTEGER,
PRIMARY KEY( n_code, s_code )
);

という感じです。

QFOREIGN KEYのエラーについて

下記おわかりの方、教えてください。

ユーザ情報テーブルは地域テーブルを参照しており、
地域テーブルにデータを追加してからユーザ情報の更新を行おうとしたところ、
下記のエラーがでました。

psql:exec_srfn_xi5_reg_upd_user.sql:5: ERROR: fk_userprovinceid referential int
egrity violation - key referenced from user_info not found in province_info
FETCH r1;

なお、ユーザ情報テーブルには下記のように定義してあります。

ALTER TABLE USER_INFO
ADD CONSTRAINT FK_USERPROVINCEID FOREIGN KEY ( PROVINCE_ID )
REFERENCES PROVINCE_INFO ( PROVINCE_ID ) MATCH FULL;

データを追加するには順番とか関係あったのでしょうか?
(いまさらユーザ情報テーブルをdropすることはできない状況です)
どうすればエラーがとれますか?
どうぞよろしくお願いいたします。

下記おわかりの方、教えてください。

ユーザ情報テーブルは地域テーブルを参照しており、
地域テーブルにデータを追加してからユーザ情報の更新を行おうとしたところ、
下記のエラーがでました。

psql:exec_srfn_xi5_reg_upd_user.sql:5: ERROR: fk_userprovinceid referential int
egrity violation - key referenced from user_info not found in province_info
FETCH r1;

なお、ユーザ情報テーブルには下記のように定義してあります。

ALTER TABLE USER_INFO
ADD CONSTRAINT FK_USER...続きを読む

Aベストアンサー

こちらのエラーは、ユーザ情報テーブル(user_info)にレコードを更新したときに、外部キーであるfk_userprovinceidが、地域テーブル(province_info)に存在しない、というものです。

user_infoの「province_id」とprovince_infoの「province_id」が一致すれば、エラーは解除されるはずです。

-mp

QSQL*Plus:SPOOLコマンドでのSQL出力

Oracle SQL*Plusで、SPOOLコマンドを使用すると、SQL実行の結果はファイルに出力されますが、実行したSQL自身が出力されません。
SETコマンドで制御できるのではないかと思いましたが、ちょっと見当たりませんでした。
何か方法はないでしょうか?
よろしくお願いします。

Aベストアンサー

SET ECHO {ON|OFF}
っていうのがあったと思いますよ

詳しくはマニュアルを参照して下さい

Qあるテーブルの内容を基準にして違うテーブルを更新するSQL文

教えて下さい。

あるテーブルに下記の内容があります。
ID│名称
─┼───
1│花
2│木
3│水

もうひとつのテーブルには、
ID│名称
─┼───
1│海
3│水
4│空
となっています。
最初のテーブルの全レコードを対象に、最初のテーブルのIDと同じ値がもうひとつの
テーブルにある場合、もうひとつのテーブルをUPDATEし、存在しなければINSERTしたい
です。
結果を
ID│名称
─┼───
1|花
2│木
3│水
4│空
を期待しています。

このようにするSQL文を教えていただけませんでしょうか。
よろしくお願いします。

Aベストアンサー

良く似た質問が過去に有りました。
回答2がぴったりだと思います。
参考にしてください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=604829


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報