lau*_*ajs 11 php mysql database phpmyadmin
我想在我的病人桌上让doctorid成为一把外键.
所以我都创造了我的表的 - 的主要问题是,当我去到表>结构>关系视图只有主键来了,我可以创建一个外键(这已经是某个表的主键我想保留 - 即患者表患者可以更改,但医生Id-我也有医生表 - 未启用).
我在关系视图中有另外一个带有两个复合键(medicineid和patientid)的表,它可以让我改变它们
我是否必须将患者表中的医生ID索引转换为其他内容?两者都不能成为主键,因为患者ID是患者表的主要 - 医生是外国人.
我希望有人能提供帮助
亲切的问候
Jon*_*ory 18
你可以用老式的方式来做...用一个看起来像这样的SQL语句
ALTER TABLE table_name
ADD CONSTRAINT fk_foreign_key_name
FOREIGN KEY (foreign_key_name)
REFERENCES target_table(target_key_name);
Run Code Online (Sandbox Code Playgroud)
这假设密钥已存在于相关表中
小智 16
为了能够创建关系,表存储引擎必须是InnoDB。您可以在操作选项卡中进行编辑。
然后,您需要确保主表中的id列已被索引。它应该出现在“结构”选项卡的“索引”部分。
最后,您可以在“结构”选项卡中看到“关系视图”选项。编辑时,您将能够选择外部表中的父列来创建关系。
见附件。我希望这对任何人都有用。
Alo*_*tel 15
必须将密钥编入索引以应用外键约束.为此,请按照步骤操作.
您现在可以将DOCTOR_ID指定为外国人.
创建一个categories
表:
CREATE TABLE categories(
cat_id int not null auto_increment primary key,
cat_name varchar(255) not null,
cat_description text
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)
创建products
表和引用categories
表:
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;
Run Code Online (Sandbox Code Playgroud)
创建vendors
表并修改products
表:
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;
Run Code Online (Sandbox Code Playgroud)
要将外键(引用vendors
表)添加到products
表中,请使用以下语句:
ALTER TABLE products
ADD FOREIGN KEY fk_vendor(vdr_id)
REFERENCES vendors(vdr_id)
ON DELETE NO ACTION
ON UPDATE CASCADE;
Run Code Online (Sandbox Code Playgroud)
如果您想删除该密钥,则:
ALTER TABLE table_name
DROP FOREIGN KEY constraint_name;
Run Code Online (Sandbox Code Playgroud)