首页 文章

如何在phpmyadmin中创建外键

提问于
浏览
11

我想在我的病人桌上让doctorid成为一把外键 .

所以我创建了所有的表 - 主要问题是,当我转到表>结构>关系视图时,只出现主键,我可以创建一个外键(它已经是某个表的主键)我想保留 - 即患者表患者可以更改,但医生Id-我也有医生表 - 未启用) .

我在关系视图中有另外一个带有两个复合键(medicineid和patientid)的表,它可以让我改变它们

我是否必须将患者表中的医生ID索引转换为其他内容?两者都不能成为主键,因为患者ID是患者表的主要 - 医生是外国人 .

table

我希望有人能提供帮助

亲切的问候

3 回答

  • 16

    你可以用老式的方式来做...用一个看起来像这样的SQL语句

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

    这假设密钥已存在于相关表中

  • 12

    必须将密钥编入索引以应用外键约束 . 为此,请按照步骤操作 .

    • 打开表结构 . (第二个标签)

    • 请参阅最后一列操作,其中包含多个操作选项 . 单击 Index ,这将使列编入索引 .

    • 打开关系视图并添加外键约束 .

    您现在可以将 DOCTOR_ID 指定为外国人 .

  • 2

    当你创建表时,你可以给出如下所示 .

    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;
    

    当 table 之后像这样创造

    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;
    

    要将外键添加到products表,请使用以下语句:

    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;
    

    希望这有助于学习FOREIGN键的工作原理

相关问题