【发布时间】:2019-03-19 14:10:24
【问题描述】:
为什么会出现这个错误?
问题)编写一个触发器来限制插入的佣金多于工资。
编,
SET SERVEROUTPUT ON;
CREATE OR REPLACE TRIGGER EMP2_TR
BEFORE INSERT ON EMP2
FOR EACH ROW WHEN (NEW.COMM > NEW.SAL)
BEGIN
Raise_Application_Error (-20100, 'COMMISION MUST NOT BE GREATER THEN SALARY');
END;
/
错误,
SQL> INSERT INTO EMP2 VALUES(101,'RAMAN',100,1000);
INSERT INTO EMP2 VALUES(101,'RAMAN',100,1000)
*
ERROR at line 1:
ORA-20100: COMMISION MUST NOT BE GREATER THEN SALARY
ORA-06512: at "AYUSH.EMP2_TR", line 2
ORA-04088: error during execution of trigger 'AYUSH.EMP2_TR'
表格,
SQL> DESC EMP2
Name Null? Type
----------------------------------------- -------- -------------------------
EMP_NO NUMBER(3)
NAME VARCHAR2(10)
SAL NUMBER(10,3)
COMM NUMBER(10,2)
【问题讨论】:
-
我们不知道 emp2 列...
-
SQL> DESC EMP2 名称为空?类型 - - - - - - - - - - - - - - - - - - - - - - - - - ---------------------------- EMP_NO NUMBER(3) NAME VARCHAR2(10) SAL NUMBER(10,3) COMM NUMBER(10, 2)
-
您尝试在薪水 100 时插入佣金 1000 - 这样行为与预期的一样。
标签: sql oracle plsql database-trigger