患者テーブルでdoctoridを外部キーにしたい。
だから私はすべてのテーブルを作成しました-主な問題は、テーブル>構造>リレーションビューに行くと、外部キーを作成できるプライマリキーのみが表示されることです(そしてそれはすでに特定のテーブルのプライマリキーです)つまり、患者テーブルの患者は変更できますが、医師ID(医師テーブルもあります)は有効ではありません)。
リレーションビューに2つの複合キー(medicineidとpatientid)を持つ別のテーブルがあり、両方を変更できます
患者テーブルの医師IDのインデックスを別のものに変更する必要はありますか?患者IDは患者テーブルのプライマリであり、医師は外国人であるため、両方をプライマリキーにすることはできません。
誰でも助けてくれることを願っています
敬具
あなたはそれを昔ながらの方法で行うことができます...このようなSQLステートメントで
ALTER TABLE table_name
ADD CONSTRAINT fk_foreign_key_name
FOREIGN KEY (foreign_key_name)
REFERENCES target_table(target_key_name);
これは、キーが関連するテーブルに既に存在することを前提としています
外部キー制約を適用するには、キーにインデックスを付ける必要があります。それを行うには、手順に従ってください。
これでDOCTOR_IDを外部として割り当てることができます。
テーブルを作成するときは、次のように指定できます。
CREATE TABLE categories(
cat_id int not null auto_increment primary key,
cat_name varchar(255) not null,
cat_description text
) ENGINE=InnoDB;
CREATE TABLE products(
prd_id int not null auto_increment primary key,
prd_name varchar(355) not null,
prd_price decimal,
cat_id int not null,
FOREIGN KEY fk_cat(cat_id)
REFERENCES categories(cat_id)
ON UPDATE CASCADE
ON DELETE RESTRICT
)ENGINE=InnoDB;
そしてテーブルがこのように作成した後
ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action;
その例に続いて。
CREATE TABLE vendors(
vdr_id int not null auto_increment primary key,
vdr_name varchar(255)
)ENGINE=InnoDB;
ALTER TABLE products
ADD COLUMN vdr_id int not null AFTER cat_id;
製品テーブルに外部キーを追加するには、次のステートメントを使用します。
ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;
キーをドロップする
ALTER TABLE table_name
DROP FOREIGN KEY constraint_name;
このヘルプが外国のキーの仕組みを学ぶことを願っています