报错描述:
Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (zqq
.tbl_employee
, CONSTRAINT fk_emp_dept
FOREIGN KEY (d_id
) REFERENCES tbl_dept
(id
))
解决方法:
数据库表中的字段存在
主外键约束,要注意业务的添加数据。
外键的优点:
- 可以保证数据的完整性和一致性
- 级联操作方便
- 将数据完整性判断交付给了数据库完成,减少了程序的代码量
主键的优点:
- 保证实体的完整性;
- 加快数据库的操作速度;
- 在表中添加新记录时,数据库会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
- 数据库自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录
主键存在的意义:
- 不仅能保证数据的唯一性,而且当以主键构建聚簇索引时,对于数据的增删改查操作,用主键做条件,能够对数据的快速的定位,提高数据操作效率。
主外键约束的理解:
假设有A,B两张表,A表字段有:id,lastname, gender,email,d_id B表字段有:id,deptlia_name。 B表的id在B表是主键,对外键进行命名后,B表的id就在A表中变成d_id了。两张表中就存在主外键约束,B表中的id记录在A表中有的才能插入A表,没有的就会提示插入失败。