创建语句完整如下,使用的是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之间的语句全部注释掉,仍然报同样的错。无解
解决方案 »
- 修改客户端计算机名称 plsql cloud not load OCI.DLL
- Oracle怎么把多个值显示在一个字段中
- willnum>(select avg(willnum),couname,couno from course问题
- 关于调用外部过程!在线急等!谢谢!
- 找一个函数
- 求vb6 sql 语句--oracle xml问题
- 关于linux下oracle9i的jdk问题,我能再装一个独立的jdk1.4上去吗?
- varchar2出现空格,请问是怎么回事?
- 采用什么方法使得SCO UNIX 5.05和ORACLE 8.0.6进行连接
- 创建一个触发器,使得每增加一个回帖,就在对应的主题帖总修改回复数+1
- linux 含有oci程序成成静态库问题
- SQL脚本不能执行。请帮忙看看
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;