「クエリを変更して、新しい給与から古い給与を差し引く列を追加します。列に増加のラベルを付けます。修正したクエリを実行します。」
さて、私の解釈によると、最初にスクリプトを作成して列を追加しようとしました。
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 - "(%s) に NULL を挿入できません"
"HR"."EMPLOYEES"."EMPLOYEE_ID"
主キーです。
- NULL 値を挿入しようとしているわけではありません。
オラクルが私のエントリを受け入れない理由がわかりません。基本的な挿入を実行して、式に構文エラーがないかどうかを確認しようとしました。
INSERT INTO EMPLOYEES(INCREASE2) VALUES ('whatever');
それでもエラーが発生しました。
次に、列をnull以外に変更しようとしました
ALTER TABLE EMPLOYEES
MODIFY
(INCREASE2 NUMBER(6) NOT NULL);
と:
02296 00000 - "(%s.%s)を有効にできません - NULL値が見つかりました"
*原因: 表に制約
を満たさない値が含まれているため、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;