mysql-外键约束
2017-02-22 本文已影响880人
戏之地
创建外键
表的结构已经建好,如何修改为外键
ADD CONSTRAINT abc -- abc作为别名
FOREIGN KEY(dept_id) REFERENCES department(id); ```
在开始创建的时候创建外键
create table dep (
id int primary key auto_increment,
dep_id int ,
foreign key(dep_id) references dep(id)
)
[CONSTRAINT symbol] FOREIGN KEY (从表的字段)
REFERENCES table_main (主表的字段)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION} ```
CONSTRAINT symbol:可以给这个外键约束起一个名字,有了名字,以后找到它就很方便了。
如果不加此参数的话,系统会自动分配一个名字。
FOREIGN KEY:将从表中的字段1作为外键的字段。
REFERENCES:映射到主表的字段2。
ON DELETE后面的四个参数:代表的是当删除主表的记录时,所做的约定。
RESTRICT(限制):如果你想删除的那个主表,它的下面有对应从表的记录,此主表将无法删除。
CASCADE(级联):如果主表的记录删掉,则从表中相关联的记录都将被删掉。
SET NULL:将外键设置为空。
NO ACTION:什么都不做。
注:一般是RESTRICT和CASCADE用的最多。
删除外键
ALTER TABLE student DROP FOREIGN KEY abc;
外键的四种形式
on delete的后面可以跟4个参数
-
RESTRICT(限制):如果你想删除的那个主表,它的下面有对应从表的记录,此主表将无法删除
-
CASCADE :如果主表中的纪录删除后,从表中的信息也会消失
-
SET NULL:将外键设置为空。
-
NO action : 什么也不做jjkjjasq