web-dev-qa-db-ja.com

phpmyadminで外部キーを作成する方法

患者テーブルでdoctoridを外部キーにしたい。

だから私はすべてのテーブルを作成しました-主な問題は、テーブル>構造>リレーションビューに行くと、外部キーを作成できるプライマリキーのみが表示されることです(そしてそれはすでに特定のテーブルのプライマリキーです)つまり、患者テーブルの患者は変更できますが、医師ID(医師テーブルもあります)は有効ではありません)。

リレーションビューに2つの複合キー(medicineidとpatientid)を持つ別のテーブルがあり、両方を変更できます

患者テーブルの医師IDのインデックスを別のものに変更する必要はありますか?患者IDは患者テーブルのプライマリであり、医師は外国人であるため、両方をプライマリキーにすることはできません。

table

誰でも助けてくれることを願っています

敬具

11
laurajs

あなたはそれを昔ながらの方法で行うことができます...このようなSQLステートメントで

ALTER TABLE table_name
    ADD CONSTRAINT fk_foreign_key_name
    FOREIGN KEY (foreign_key_name)
    REFERENCES target_table(target_key_name);

これは、キーが関連するテーブルに既に存在することを前提としています

17
Jon Story

外部キー制約を適用するには、キーにインデックスを付ける必要があります。それを行うには、手順に従ってください。

  1. テーブル構造を開きます。 (2番目のタブ)
  2. 複数のアクションオプションがある最後の列のアクションを参照してください。 Indexをクリックすると、列にインデックスが作成されます。
  3. 関係ビューを開き、外部キー制約を追加します。

これでDOCTOR_IDを外部として割り当てることができます。

15
Alok Patel

テーブルを作成するときは、次のように指定できます。

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;

このヘルプが外国のキーの仕組みを学ぶことを願っています

2
Yagnik Detroja

関係を作成できるようにするには、テーブルStorage EngineInnoDBである必要があります。 Operationsタブで編集できます。 Storage Engine Configuration

次に、メインテーブルのid列にインデックスが付けられていることを確認する必要があります。 IndexセクションのStructureタブに表示されます。

Index list

最後に、StructureタブにRelations Viewオプションが表示されます。編集する場合、外部テーブルの親列を選択してリレーションを作成できます。

enter image description here

添付ファイルをご覧ください。これが誰にとっても役立つことを願っています。

0
Sky Games Inc