2

外部キーに関する情報を探していました....もう一度!...そしてたまたま webschools.com で、同じことの異なる例があることに気付きました。彼らが持っている外部キーの例について

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)

今..........

違いは何ですか?...

データベースにどれを使用するかを知るにはどうすればよいですか? これは、私が SQL で抱えている多くの混乱を解決するのに役立つと感じています...

4

3 に答える 3

2

効果に違いはありません: まったく同じことを達成します。

私はインライン バージョンを好みます。これは、fk 定義をできるだけ列定義に近づけるためです。

3番目の方法があります-別のalter tableステートメント(「公式」の方法だと思います):

alter table orders
add contraint fk_PerOrders 
foreign key p_id references persons(p_id);

一部のデータベースでは、いずれかのバージョンがサポートされていない場合があります。

于 2012-12-04T04:58:38.777 に答える
1

すべて同じです(3つの方法):

  • 最初に、最初に定義された外部キー制約 P_Idとして定義しました。int
  • 第二に、P_Id int FOREIGN KEY REFERENCES Persons(P_Id)P_Id同じ行の排便と外部キー制約の排便です。

  • 第三に、a foreign key constraint nameまた与えるfk_PerOrdersです。それは可能性がありますuseful later when you wants to drop constraint。例えば

ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders

制約に名前を付けることは常に良い習慣です。

于 2012-12-04T05:05:09.997 に答える
1

それらはすべて同じことをしています。わかりやすいと思う方を使ってください。

于 2012-12-04T04:58:54.820 に答える