表名是student,表中有3个字段id,name,grade
下面是创建触发器的代码:
create or replace trigger insert_update
after insert or update of grade on student for each row
begin
if inserting then
dbms_output.putline('插入操作!');
else
dbms_output.putline('更新操作!');
end if;
if :new.grade<60 then
dbms_output.putline(:new.name||'的成绩不及格!将删除之');
delete from student where id=:new.id;
else
dbms_output.putline('该生成绩及格!');
end if;
end;
这里,先谢过各位了。
下面是创建触发器的代码:
create or replace trigger insert_update
after insert or update of grade on student for each row
begin
if inserting then
dbms_output.putline('插入操作!');
else
dbms_output.putline('更新操作!');
end if;
if :new.grade<60 then
dbms_output.putline(:new.name||'的成绩不及格!将删除之');
delete from student where id=:new.id;
else
dbms_output.putline('该生成绩及格!');
end if;
end;
这里,先谢过各位了。
解决方案 »
- 连接oracle数据库,返回-1034,搞了两天没搞定!!
- 关于用绿色软件PL/SQL 访问远程服务器的oracle数据库的问题
- 启动系统提示java.exe 出错?
- 在什么情况下会使用物化呢?(material view)
- 树形结构 oracle里面怎么设计
- 跨数据库的事务问题
- 请问:数据库绝本文件是什么?
- 几道关于oracle的题目,高手请进,急急急。。。在线等。。。
- 在服务器端能以sys/change_on_install 以sysdba 身份联接,但在客户端却不能这样连接,而只能以normal 身份连接,为何?如何改
- 请问在记录保存的时候偶尔会报‘插入的列过大’的错误,一般是什么原因?
- oracle 使用BDLINK远程推送数据 总是执行失败 详情如下
- 如何将只有只读权限的远程数据库的表复制到本地新建表中
应该是这一句有问题
在触发器里面不能使用这样的删除语句 。
要实现这个功能你需要新加一个表级触发器。
另外还有一个包,这个包里面有一个数组变量用于存储要删除的学生的id号码。首先需要修改这个行级触发器,if :new.grade<60 then 里面,将需要删除的学生的id号码存储到包变量里面。
表级触发器里面遍历这个包变量,删除相应的数据 。即可。