项目场景:

当mysql表已经创建好时,忘了给表添加外键约束.


问题描述:

添加外键的方式:

方式一:还未创建表时:FOREIGN KEY (此表id) REFERENCES class(外表id)

CREATE TABLE student(
        sid INT AUTO_INCREMENT,
        sname VARCHAR(10),
        s_cid INT,
        PRIMARY KEY(sid),
        FOREIGN KEY (s_cid) REFERENCES class(cid)
);


方式二:已经创建表:

ALTER TABLE 表1 ADD FOREIGN KEY (表1的键) REFERENCES tbl_dept(表2的键);

例如: ALTER TABLE tbl_emp ADD FOREIGN KEY (dep_id) REFERENCES tbl_dept(dept_id);


其它问题:

添加外键需要注意:外键和引用键中的相应列必须具有类似的数据类型。整数类型的大小和符号必须相同。字符串类型的长度不需要相同。对于非二进制(字符)字符串列,字符集和排序规则必须相同。InnoDB允许外键引用任何索引列或列组。但是,在引用的表中,必须有一个索引,其中引用的列以相同的顺序作为第一列列出。

添加索引:

alter table orders add constraint   主键的新名字    primary key   (要改成主键的列的名字);
alter table tbl_dept add constraint   dept_id    primary key   (dept_id);

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐