mysql 语句练习
2017-03-29 20:13
316 查看
在设计表时忘记添加外键约束了,后来想添加外键,结果报了这个错误。
ERROR 1452 : Cannot add or update a child row:
我估计是因为里面的数据不能和另一张表的主键匹配,所以设置失败,所以这里就是提供两种解决方法,第一个删除原有的属性名,重新加这个属性名,重新赋值,并设置外键约束。
alter table emp(表名)
add constraint fk_emp_dept (外键名)
foreign key (deptno) (本表的外键名)
references dept(deptno) (外表的表名和主键)
ON DELETE RESTRICT ON UPDATE CASCADE;(更新方式 删除时 不操作 更新时子表同时更新)
第二种方式 是添加一个属性名 然后将它设为外键,方法同上。
增加属性名的SQL语句: alter table emp add foreignkey varchar(20);默认是加到最后 ,你可以在varchar后面加上修饰的 first | after 属性名 来调整顺序。
这里的主表 和 子表的意思 有外键的是子表,当删除子表数据时,主表是不受影响的,这个概念容易混淆。
后续更新。
ERROR 1452 : Cannot add or update a child row:
我估计是因为里面的数据不能和另一张表的主键匹配,所以设置失败,所以这里就是提供两种解决方法,第一个删除原有的属性名,重新加这个属性名,重新赋值,并设置外键约束。
alter table emp(表名)
add constraint fk_emp_dept (外键名)
foreign key (deptno) (本表的外键名)
references dept(deptno) (外表的表名和主键)
ON DELETE RESTRICT ON UPDATE CASCADE;(更新方式 删除时 不操作 更新时子表同时更新)
第二种方式 是添加一个属性名 然后将它设为外键,方法同上。
增加属性名的SQL语句: alter table emp add foreignkey varchar(20);默认是加到最后 ,你可以在varchar后面加上修饰的 first | after 属性名 来调整顺序。
这里的主表 和 子表的意思 有外键的是子表,当删除子表数据时,主表是不受影响的,这个概念容易混淆。
后续更新。
相关文章推荐
- mysql 语句练习
- MySQL_SQL常用语句自我测试练习-2
- MySQL语句练习
- Mysql语句练习
- MySQL查询语句的45道练习
- mysql 常用数据库语句 小练习
- mysql的sql语句练习
- MySQL环境搭建及SQL查询语句练习
- mysql 语句练习
- Mysql高级查询语句练习
- mysql crash course 练习语句
- MySQL基本查询语句练习
- MySQL基本查询语句练习
- mysql基础语句练习
- 我最近练习的 mysql 语句
- MySQL SQL常用语句自我测试练习
- Mysql 基本语句练习
- mysql练习语句
- Linux命令:MySQL系列之七--INSERT、DELET、UPDATE语句相关练习
- MySQL索引--语句&练习