create trigger orderupdate
before update on orderform_list for each row
begin
update orderform set diaodu=1
from orderform a,deleted d,inserted i
where a.orderform_id=d.orderform_id
end
orderupdatecreate trigger orderdelete
before delete on orderform_list
for each row
begin
delete orderform
from orderform a,deleted b
where a.orderform_id=b.orderform_id
end
orderform_list
我写的2 个触发器都有错误,但我不知道怎么改,哪位高手能够指点一下。 其中我的orderform_list和orderform表中都有diaodu这项,我想改orderform_list中的diaodu,然后通过触发器将orderform里的diaodu也改为1。第二个是,我想删除orderform_list中diaodu为1的一行数据,同时通过触发器也把orderform里diaodu为1的那一行数据删除!
before update on orderform_list for each row
begin
update orderform set diaodu=1
from orderform a,deleted d,inserted i
where a.orderform_id=d.orderform_id
end
orderupdatecreate trigger orderdelete
before delete on orderform_list
for each row
begin
delete orderform
from orderform a,deleted b
where a.orderform_id=b.orderform_id
end
orderform_list
我写的2 个触发器都有错误,但我不知道怎么改,哪位高手能够指点一下。 其中我的orderform_list和orderform表中都有diaodu这项,我想改orderform_list中的diaodu,然后通过触发器将orderform里的diaodu也改为1。第二个是,我想删除orderform_list中diaodu为1的一行数据,同时通过触发器也把orderform里diaodu为1的那一行数据删除!
解决方案 »
- decode的一种想法 来看下如何实现
- oracle创建序列相关问题
- oracle 如何修改列递增,在线等...
- oracle 连接数 太少
- oracle如何导出表结构和数据
- oracle 连接中断问题
- oracle 的几个小问题 希望各位能够帮我 解决 谢谢了
- 谁能解决,高分奉送
- proc 编译没错,执行出错,兄弟们看看,很简单的程序!
- 数据库表,突然没了!!!!!!!!!!!!!!!!!!!!!
- select中报错ORA-01401: inserted value too large for column,求帮忙
- 100分 OracleXEUniv ORA-06502:PL/SQL 数字或值错误:字符串缓冲区太小
把before update on 换成 after update on试试吧!
CREATE TRIGGER orderupdate
BEFORE UPDATE ON orderform_list
FOR EACH ROW
BEGIN
UPDATE orderform
SET diaodu = 1 FROM orderform a
WHERE a.orderform_id = :new.orderform_id;
END orderupdate;
/
CREATE TRIGGER orderdelete
BEFORE DELETE ON orderform_list
FOR EACH ROW
BEGIN
DELETE orderform FROM orderform a
WHERE a.orderform_id = :old.orderform_id;
END orderdelete;
/
触发器是我今天新学的,不太了解
用了,但还是那样,我说下我是怎么用的,看看是不是我用的方法错了。
我点击调度直接运行"update orderform_list set diaodu=1 where orderform_id=" + id;语句
然后又运行"delete orderform_list where diaodu=1"
这样运行2条语句能通过触发器完成我所想实现的功能吗?
你直接对orderform_list执行update和delete就会触发触发器执行啊
你可以通过执行后查看各表格里的数据 看触发器是否执行正确
把4楼的代码拷下来 直接放到一个command window 下酒可以了啊
或是分作两段 去掉 / 一个一个手工执行
create or replace trigger orderform_update_trig
before update on orderform_list
for each row
declare
-- local variables here
begin
update orderform
set diaodu=:new.diaodu
where orderform_id = :new.orderform_id;
end orderform_update_trig;
又写了一个这个,好使了,没红叉。