create or replace trigger tirg_states after insert on statesfor each row
begin
if(:new.s_status=1) then
if (:new.s_id in (select id from father) ) then
update father set sales=sales+1 where id=:new.s_id;
else
insert into father(id,sales) values(:new.s_id,1);
end if;
end if;
end;
解释一下:我在states表做个插入触发器,如果states表中status字段等于1,这是:如果states表中new.s_id 的值在father表id 中,则更新,如果不在,就插入。可 if (:new.s_id in (select id from father) ) then 通不过,报“PLS-00405: 此上下文中不支持子查询“ 编译错误高手,这句我怎么写呢???帮我改一下
begin
if(:new.s_status=1) then
if (:new.s_id in (select id from father) ) then
update father set sales=sales+1 where id=:new.s_id;
else
insert into father(id,sales) values(:new.s_id,1);
end if;
end if;
end;
解释一下:我在states表做个插入触发器,如果states表中status字段等于1,这是:如果states表中new.s_id 的值在father表id 中,则更新,如果不在,就插入。可 if (:new.s_id in (select id from father) ) then 通不过,报“PLS-00405: 此上下文中不支持子查询“ 编译错误高手,这句我怎么写呢???帮我改一下
解决方案 »
- 请高手帮个忙,实在想不出来了
- oracle端口问题
- 一条语句 把列的值相加
- ORA-03106错误。100分求救,在线等待,立刻结分。
- 关于添加数据文件突然死机的问题!!!!!!
- 某著名外企面试题,欢迎讨论!
- 做数据库恢复时报00214,00310,00334的错误,小妹很急!!
- 请问:Oracle的索引不是依附于表吗?要单独建?从SQLServer转过来,不明白!
- ***怎么实现这样的查询?先查出所有的信息,最后进行统计。详情请进!***
- dbca建库报错,无法连接到另一个节点
- 想创建一个before delete 触发器,使得符合条件的数据不被删除,怎么写呢?
- 用ERWIN设计好了LDM,如何批量地把字段名从全部大写改成首字母大写、其它字母小写呀?
AFTER INSERT ON STATES FOR EACH ROW
BEGIN
IF (:NEW.S_STATUS = 1) THEN
UPDATE FATHER SET SALES = SALES + 1 WHERE ID = :NEW.S_ID;
IF SQL%ROWCOUNT = 0 THEN
INSERT INTO FATHER (ID, SALES) VALUES (:NEW.S_ID, 1);
END IF;
END IF;
END;