在insert事件时触发操作,操作中能不能改变正在的insert的那行的值?触发器代码如下
create TRIGGER UT_ERP_INSERT
BEFORE INSERT ON ERP
FOR EACH ROW
WHEN (NEW.flag_read='0')
DECLARE
prop_count number; --记录table_execute中已经存在的本task_id的记录数
sys_date date; --保存服务器系统的当前时间,在插入数据的时候用
BEGIN
SELECT count(*) into prop_count from table_execute where table_execute.TASK_ID=:new.TASK_ID;
if (prop_count=0) then --没查到记录,则执行插入
select current_date into sys_date from dual; --获取系统当前时间
insert into TABLE_EXECUTE(FLAG_TASK, TASK_ID, CARGO_NO,TABLE_EXECUTE.TYPE, CARGO_NAME, LOCATION_NO, LOCATION_GRID_NO, NUM_CARGO, DATETIME_INCOME, FLAG_INCOME, GROUP_NO, FLAG_READ, ADDITION, DATETIME_FEEDBACK, DUTY_PERSON, DUTY_UNIT, PART_NO, PRI_LEVEL,FACT_NUM_CARGO,FLAG_WAREHOUSE,FLAG_COMMIT,PERSON_OPERATE,DATETIME_OPERATE,OPERATE)
values('1',:new.TASK_ID,:new.CARGO_NO,:new.TYPE,:new.CARGO_NAME,:new.LOCATION_NO,:new.LOCATION_GRID_NO,:new.NUM_CARGO,:new.DATETIME_INCOME,:new.FLAG_INCOME,:new.GROUP_NO,:new.FLAG_READ,:new.ADDITION,:new.DATETIME_FEEDBACK,:new.DUTY_PERSON,:new.DUTY_UNIT,:new.PART_NO,:new.PRI_LEVEL,0,'0','0','触发器',sys_date,'插入');
end if;
:new.flag_read:='1'; --把正在插入的行的flag_read值置为‘1’,
END UT_ERP_INSERT;在上面倒数第二行:new.flag_read:='1'; 不起作用,触发完之后flag_read还是0,有什么办法可以实现么?各位大侠帮忙啊
create TRIGGER UT_ERP_INSERT
BEFORE INSERT ON ERP
FOR EACH ROW
WHEN (NEW.flag_read='0')
DECLARE
prop_count number; --记录table_execute中已经存在的本task_id的记录数
sys_date date; --保存服务器系统的当前时间,在插入数据的时候用
BEGIN
SELECT count(*) into prop_count from table_execute where table_execute.TASK_ID=:new.TASK_ID;
if (prop_count=0) then --没查到记录,则执行插入
select current_date into sys_date from dual; --获取系统当前时间
insert into TABLE_EXECUTE(FLAG_TASK, TASK_ID, CARGO_NO,TABLE_EXECUTE.TYPE, CARGO_NAME, LOCATION_NO, LOCATION_GRID_NO, NUM_CARGO, DATETIME_INCOME, FLAG_INCOME, GROUP_NO, FLAG_READ, ADDITION, DATETIME_FEEDBACK, DUTY_PERSON, DUTY_UNIT, PART_NO, PRI_LEVEL,FACT_NUM_CARGO,FLAG_WAREHOUSE,FLAG_COMMIT,PERSON_OPERATE,DATETIME_OPERATE,OPERATE)
values('1',:new.TASK_ID,:new.CARGO_NO,:new.TYPE,:new.CARGO_NAME,:new.LOCATION_NO,:new.LOCATION_GRID_NO,:new.NUM_CARGO,:new.DATETIME_INCOME,:new.FLAG_INCOME,:new.GROUP_NO,:new.FLAG_READ,:new.ADDITION,:new.DATETIME_FEEDBACK,:new.DUTY_PERSON,:new.DUTY_UNIT,:new.PART_NO,:new.PRI_LEVEL,0,'0','0','触发器',sys_date,'插入');
end if;
:new.flag_read:='1'; --把正在插入的行的flag_read值置为‘1’,
END UT_ERP_INSERT;在上面倒数第二行:new.flag_read:='1'; 不起作用,触发完之后flag_read还是0,有什么办法可以实现么?各位大侠帮忙啊
解决方案 »
- ORACAL TNS 12505 ORA-12505 TNS:listener does not currently know of SID given in
- 用存储过程添加,难道不可以用自动增长列添加吗?急,
- ORACLE递归查询优化
- 关于rownum=1的疑问
- 我把一个叫jtonsoft项目的映射文件导成oracle数据库sql脚本,谁能填上正确的数据呢?
- 在线等,急哈!!求从SQL转换成Oracle存储过程。
- oracle816 oracleservice服务启动不了
- 解决一个查询问题,不知能不能实现
- 谁有accp第2学期的教材闲置不用的,可以卖给我吗?地点在上海,qq;121196370
- 怎样在SQL Server中
- 在ORACLE 中用SELECT rowid form tabname,取得的ROWID ,如:AAADdeAAIAAABmPAAA,是不是经过BASE-64编码后的结果?另:是不是标准的BASE-64编
- update 关于违反唯一约束性和update一条数据的问题.急,在线等候高手
而且数据库里面flag_read字段是char(1)
INSERT时改1不行吗?
这是业务逻辑的控制要求
update tab set flag_read = 1
update的同时update,无止境的啊。