mysql 当向电子邮件表中的字段添加外键约束时,将删除该字段

1l5u6lss  于 11个月前  发布在  Mysql
关注(0)|答案(1)|浏览(99)

我在MySQL中创建了一个包含两个表的数据库。代码如下:

create table user_information (
Login_id varchar(50),
User_id varchar(50),
Surname varchar(50),
forename varchar(50),
title varchar(
position varchar(50),
phone varchar(25),
email varchar(25),
location varchar(25)
);

个字符
我还在下面的代码中添加了外键:

alter table email
add constraint fk_User_id
FOREIGN KEY(User_id) REFERENCES user_information(User_id);

我面临的问题

我遇到的问题是,当我试图删除电子邮件表中的一个字段,以查看外键约束是否有效,但约束不起作用。
错误代码1451:无法删除或更新父行
我试着查看外键的创建,看看是否有任何错误,但据我所知,我找不到任何错误。
我还试图删除电子邮件表中的数据,并再次插入数据,看看这是否有很大的不同,但不幸的是没有。

e5nszbig

e5nszbig1#

为什么不工作:

  • 您的电子邮件表应该是父表
  • 您没有在add constraint中指定任何ON DELETE,尽管mysql分配了默认值
    如何解决:
  • 使用主键更新电子邮件表架构

创建表email(User_id varchar(50)NOT NULL PRIMARY KEY,email varchar(50)null);

  • 删除你的旧约束,并添加下面一个,与ON DELETE RESTRICT它将显示[23000][1451] Cannot delete or update a parent row,而试图删除行形式的父(电子邮件)表中有外键的用户信息表

ALTER TABLE user_information ADD CONSTRAINT fk_tblEmail_User_id FOREIGN KEY(User_id)REFERENCES email(User_id)ON EMAIL RESTRICT;

请看附件屏幕截图

x1c 0d1x的数据

相关问题