create table d(id numeric(1), code varchar(2))
上記の表を作成した後、両方のフィールドに複合主キーと外部キーを追加するにはどうすればよいですか?
Oracleでは、これを行うことができます:
create table D (
ID numeric(1),
CODE varchar(2),
constraint PK_D primary key (ID, CODE)
);
alter table d add constraint pkc_Name primary key (id, code)
それを行う必要があります。使用するDBに応じて、基本的なプライマリキー/インデックスには多くのオプションがあります。
ALTER TABLE
ステートメントはChrisによって提示されますが、最初に列を宣言する必要がありますNOT NULL
。主キーのすべての部分はNOT NULL
。
最初にテーブルを作成してから、以降の手順でキーを追加する必要はありません。テーブルの作成中に主キーと外部キーの両方を追加できます。
この例では、外部キーで参照するテーブル(Codes
)の存在を想定しています。
CREATE TABLE d (
id [numeric](1),
code [varchar](2),
PRIMARY KEY (id, code),
CONSTRAINT fk_d_codes FOREIGN KEY (code) REFERENCES Codes (code)
)
参照できるテーブルがない場合は、例が機能するように次のようなテーブルを追加します。
CREATE TABLE Codes (
Code [varchar](2) PRIMARY KEY
)
注:外部キーを作成する前に参照するテーブルが必要です。