【发布时间】:2020-12-25 05:13:06
【问题描述】:
问题
我目前正在尝试将新员工插入到具有相同名称的测试数据库的employees 表中。
如果我尝试添加指定 emp_no 的新员工,则成功完成:
insert into employees.employees(
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date
)
values(
500500,
date('1970-05-12'),
'John',
'Smith',
'M',
date('1991-10-08')
);
但是当我尝试删除emp_no 时,它不会被数据库增加。
我正在寻找一种使数据库增加 emp_no 本身的方法,但我自己无法找到它。
数据库
Here 是标题数据库本身的链接以供参考。
到目前为止我尝试了什么
我尝试了如下原生查询:
insert into employees.employees(
birth_date,
first_name,
last_name,
gender,
hire_date
)
values(
date('1970-05-12'),
'John',
'Smith',
'M',
date('1991-10-08')
);
但我收到以下错误:
Error Code: 1364. Field 'emp_no' doesn't have a default value
所以根据here、here 或here 的解决方案,我尝试启用自动递增emp_no
ALTER TABLE employees.employees MODIFY emp_no int NOT NULL AUTO_INCREMENT;
但这又给了我一个错误
Error Code: 1833. Cannot change column 'emp_no': used in a foreign key constraint 'dept_emp_ibfk_1' of table 'employees.dept_emp'
我什至不知道这是否是导致问题的原因,也不知道我是否应该继续这样做。也许问题本身存在于其他地方?如果有任何帮助,我将不胜感激。
【问题讨论】:
-
最简单的解决方案是在
INSERT-statement 中添加emp_no的值。 -
我意识到我问错了问题 - 它现在正在更新。
标签: mysql database-design