如何在phpmyadmin中创建外键
我想让doctorid成为我病人表中的外键 所以我创建了所有的表-主要的问题是,当我进入表>结构>关系视图时,只有主键出现,我可以创建外键(并且它已经是我想要保留的特定表的主键-即患者表患者可以更改,但医生Id-我也有一个医生表-未启用) 在关系视图中,我有另一个具有两个复合键(medicineid和patientid)的表,它允许我同时更改这两个键 我是否必须将患者表中医生ID的索引与其他索引关联?这两个索引不能都是主键,因为患者ID是患者表的主键-医生是外键 我希望任何人都能帮忙如何在phpmyadmin中创建外键,php,mysql,database,phpmyadmin,Php,Mysql,Database,Phpmyadmin,我想让doctorid成为我病人表中的外键 所以我创建了所有的表-主要的问题是,当我进入表>结构>关系视图时,只有主键出现,我可以创建外键(并且它已经是我想要保留的特定表的主键-即患者表患者可以更改,但医生Id-我也有一个医生表-未启用) 在关系视图中,我有另一个具有两个复合键(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);
ALTER table_name
ADD CONSTRAINT constraint_name
FOREIGN KEY foreign_key_name(columns)
REFERENCES parent_table(columns)
ON DELETE action
ON UPDATE action;
这假设键已存在于相关表中必须对键进行索引才能应用外键约束。要执行此操作,请执行以下步骤
您现在可以将医生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 table_name
ADD CONSTRAINT fk_foreign_key_name
FOREIGN KEY (foreign_key_name)
REFERENCES target_table(target_key_name);
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;
希望这有助于学习外键的工作原理为了能够创建关系,表存储引擎必须是InnoDB。您可以在操作选项卡中进行编辑。 然后,您需要确保主表中的id列已经被索引。它应该出现在结构选项卡的索引部分 最后,您可以在“结构”选项卡中看到“选项关系”视图。编辑时,您将能够选择外部表中的父列来创建关系
请参阅附件。我希望这对任何人都有用。一个简单的SQL示例如下:
ALTER TABLE `<table_name>` ADD `<column_name>` INT(11) NULL DEFAULT NULL ;
ALTER TABLE``ADD``INT(11)NULL默认为NULL;
确保在表名和列名中使用反勾号`生成外键,您需要创建该字段的第一个索引。创建索引后,转到关系视图,您将看到该字段以及主键。嗨,Jon!!感谢您的回答!!我不熟悉使用php,这就是我如何完成rel当我使用visual studio时,我只是想确保我的操作正确-因此,如果我使用SQL语句,这将在表中创建外键?我是否必须对患者表中的“医生id”列进行任何更改?
ALTER table patient ADD CONSTRAINT fk_to_Doctorid foreign key(Doctorid)REFERENCES doctor(博士)
-这是正确的吗?是的,SQL语句直接影响底层结构:PHPMyAdmin只是一个为您生成SQL语句的图形界面。只要医生id表已经建立索引,您就不必更改任何内容。如果没有,您需要根据@Alok的回答将其转换为索引应用SQL语句对将成为外键的列进行索引?是的,没错,否则在运行SQL语句时会出现错误谢谢大家!回答得好!我对使用php还不熟悉,所以这是一个很大的帮助-如果我选择使用SQL语句创建外键-`ALTER TABLE Patient ADD CONSTRAINT fk_to_Doctorid foreign key(Doctorid)引用Doctor(Doctorid);`在执行此操作之前,我必须对列进行索引吗?不,在添加外键约束之前,需要对列进行索引。您可以使用MySql语句添加索引。请参阅:我已经索引并运行了该语句-这是在之后出现的-这是否意味着它成功?-MySql返回了一个空结果集(即零行)。(查询耗时0.2090秒)是的!检查关系视图以获得确认!非常好的回答@Alok.Great Yagnik感谢您提供的所有信息和帮助:)更改存储引擎会为事务锁定表。锁定时间取决于服务器。更改存储引擎时请记住这一点。