“修改您的查询以添加从新工资中减去旧工资的列。标记列增加。运行修改后的查询。”
好吧,根据我的解释,我首先尝试通过脚本添加列:
ALTER TABLE EMPLOYEES ADD (
INCREASE2 NUMBER(6));
然后:
INSERT INTO EMPLOYEES(INCREASE2)
SELECT (salary*1.155) - salary FROM EMPLOYEES;
SQL 错误:ORA-01400:não é possível inserir NULL em ("HR"."EMPLOYEES"."EMPLOYEE_ID") 01400. 00000 - “无法将 NULL 插入 (%s)”
"HR"."EMPLOYEES"."EMPLOYEE_ID"
是主键。
- 我不是要插入 NULL 值;
我不知道为什么 oracle 不接受我的条目。我试图通过执行基本插入来检查我的表达式中是否存在任何语法错误:
INSERT INTO EMPLOYEES(INCREASE2) VALUES ('whatever');
我仍然得到了错误。
我尝试然后将列修改为不为空
ALTER TABLE EMPLOYEES
MODIFY
(INCREASE2 NUMBER(6) NOT NULL);
和:
02296 00000 - “无法启用 (%s.%s) - 找到空值”
*原因:alter table enable 约束失败,因为表
包含不满足约束的值。
*行动:明显
我为这个练习找到了一个简单的解决方案,但我仍然很好奇为什么我的代码没有成功。
解析度:
SELECT employee_id, last_name, salary,
ROUND(salary * 1.155, 0) "New Salary",
ROUND(salary * 1.155, 0) - salary "Increase"
FROM employees;