SQL FOREIGN KEY制約
SQL FOREIGN KEY制約
別のテーブルの主キーに1つの表の点でFOREIGN KEY。
のは、外部キーを説明するために例を使用してみましょう。 次の2つの表を考えてみます。
「人」の表:
P_Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Hansen | Ola | Timoteivn 10 | Sandnes |
2 | Svendson | Tove | Borgvn 23 | Sandnes |
3 | Pettersen | Kari | Storgt 20 | Stavanger |
"受注"テーブル:
O_Id | OrderNo | P_Id |
---|---|---|
1 | 77895 | 3 |
2 | 44678 | 3 |
3 | 22456 | 2 |
4 | 24562 | 1 |
、 "受注"テーブル "P_ID」欄ポイント"人 "テーブル" P_ID」欄にご注意ください。
"人"テーブル "P_ID」欄は、「人」の表PRIMARY KEYです。
"受注"テーブル "P_ID」欄には、"受注 "テーブルの外部キーです。
FOREIGN KEY制約は、テーブルの動作との間の接続への損傷を防止するために使用されます。
それは、テーブル内の点1でなければならないため、FOREIGN KEY制約は、外部キー列に不正なデータを防ぐことができます。
SQL FOREIGN KEY制約は、時のCREATE TABLE
"受注"テーブルには、「P_ID」列にFOREIGN KEY制約を作成するために作成され、以下のSQL:
MySQLの:
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
SQL Serverの/ Oracleの/ MSアクセス:
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
FOREIGN KEY制約に名前を付け、列FOREIGN KEY制約を複数定義するには、次のSQL構文を使用します。
MySQLの/ SQL Serverの/ Oracleの/ MSアクセス:
(
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 FOREIGN KEY制約は、ALTER TABLEとき
列はFOREIGN KEY制約」P_ID "を作成するための"受注 "テーブルが作成されている場合には、次のSQLを使用してください:
MySQLの/ SQL Serverの/ Oracleの/ MSアクセス:
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
FOREIGN KEY制約に名前を付け、列FOREIGN KEY制約を複数定義するには、次のSQL構文を使用します。
MySQLの/ SQL Serverの/ Oracleの/ MSアクセス:
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
FOREIGN KEY制約を元に戻します
FOREIGN KEY制約を削除するには、次のSQLを使用します。
MySQLの:
DROP FOREIGN KEY fk_PerOrders
SQL Serverの/ Oracleの/ MSアクセス:
DROP CONSTRAINT fk_PerOrders