create table my_emp as select empno,ename,sal, deptno from emp;
--完成一个触发器,用于记录对于my_emp表的操作信息
--将对用的insert delete update操作
--记录到一张日志表中update_logger(
--log_id number, ID
--oparationType varchar2() 操作类型
--log_time date, 操作事件
--log_rows number) 影响行数
create table logger(
log_id number primary key,
oparationType varchar2(10),
log_time date
log_rows number(2)
)
//创建序列
create sequence log_id increment by 1 start with 1;
//创建触发器
create or replace trigger tri
after insert or update or delete
on my_emp
for each row
declare
oparationType char(10);
//这里怎么设置影响的行数
log_rows.....
begin
if inserting then
oparationType :='插入';
else if updating then
oparationType :='更新';
else
oparationType :='删除';
endif
insert into logger values(log_id.nextval,oparationType,sysdate,log_rows);
end;
LINE/COL ERROR
-------- ----------------------------------------------------------------
13/8 PLS-00103: 出现符号 "INSERT"在需要下列之一时: := . ( @ % ; 符号 ";" 被替换为 "INSERT" 后继续。
14/4 PLS-00103: 出现符号 ";"在需要下列之一时: if
请问这个问题怎么解决
oracle triggger
------解决方案--------------------
一 “这里怎么设置影响的行数”,楼主想要表达的是什么意思?
前面的for each row已经说明了是对每一行的
二 else if修改为elsif
三 endif后加分号(英文状态下)
------解决方案--------------------
记录影响的行数,在触发器里面记录是不太好实现的,因为每次触发一次,变量就会重新复制
可以用SQL%rowcount 游标属性来记录影响的行数