0

Oracleで外部キーを作成するには、時々見ます

CONSTRAINT FK_Supplier
  FOREIGN KEY (Supplier_id)
  REFERENCES Supplier(Supplier_id)

しかし、時々、私はこれを見ます

CONSTRAINT FK_Supplier
  FOREIGN KEY (Supplier_id)
  REFERENCES Supplier

違いは、最初のステートメントでは列Supplier_idがテーブルの後に来るがSupplier、2 番目のステートメントでは省略されていることです。

助けてくれてありがとう

4

2 に答える 2

2

これはドキュメントで説明されています:

親の表またはビューのみを指定して列名を省略した場合、外部キーは親の表またはビューの主キーを自動的に参照します。外部キーと参照キーの対応する列は、順序とデータ型が一致している必要があります。

于 2012-04-19T18:14:37.180 に答える
1

リレーショナル モデルに忠実でないことに関する SQL の主な批判の 1 つは、列の順序付けへの依存です。ただし、SQL に非リレーショナル機能が含まれているからといって、それを使用する必要があるわけではありません。実際、私はそのような機能を避けるか、回避できない場合は軽減する必要があると強く感じています。

標準 SQL には、列の順序付けへの依存を回避するための構文がいくつか用意されています ( NATURAL JOINUNION CORRESPONDINGなど)。他の構文は、そのような依存を軽減するのに役立ちます (例: INSERT INTO (<comma list of columns>) VALUES (<comma list of fields in same order>))。FOREIGN KEY構文は、この 2 番目のカテゴリに分類されます。

結論: 常に最初の例の構文を使用し、2 番目の例は避けてください。

于 2012-04-20T11:20:31.647 に答える