创建语句完整如下,使用的是scott用户登录,所测试的表也是scott其中的一个基础表dept。但是编译报错 Warning: Trigger created with compilation errors。各位有知道原因的么?
CREATE OR REPLACE TRIGGER tr_insertdept
BEFORE INSERT ON dept
FOR EACH ROW
begin
if (SELECT deptno FROM inserted) > 70
--print '报错';
RAISE_APPLICATION_ERROR(-20001,'不能插入大于70的DEPTNO!');
ROLLBACK TRANSACTION;
end if;
end;
/scott已经被赋予DBA权限。后来我又将begin end之间的语句全部注释掉,仍然报同样的错。无解
CREATE OR REPLACE TRIGGER tr_insertdept
BEFORE INSERT ON dept
FOR EACH ROW
begin
if (SELECT deptno FROM inserted) > 70
--print '报错';
RAISE_APPLICATION_ERROR(-20001,'不能插入大于70的DEPTNO!');
ROLLBACK TRANSACTION;
end if;
end;
/scott已经被赋予DBA权限。后来我又将begin end之间的语句全部注释掉,仍然报同样的错。无解
CREATE OR REPLACE TRIGGER tr_insertdept
BEFORE INSERT ON dept
FOR EACH ROW
begin
null;
end;
/
这样子可以吗?都注释掉就没有方法体了,肯定会编译不过的吧,
而且楼主的if用的不对吧?if ... then
end if;
BEFORE INSERT ON dept FOR EACH ROW
BEGIN
IF :new.Deptno > 70 THEN
--print '报错';
RAISE_APPLICATION_ERROR(-20001,'不能插入大于70的DEPTNO!');
-- 不需要自己回滚了,因为触发器中一但抛出异常,整个工作会自动回滚
-- ROLLBACK TRANSACTION;
end if;
end;