create or replace trigger child_birth
after update or insert on HRB02_04_03
FOR EACH ROW
declare
id1 number;
id2 number;
select TEST_SEQ.Nextval into id1 from dual
select TEST_SEQ.Currval into id2 from dual
begin
if updating then
update BIR_PERINATAL
set INHisCode = :NEW.hrb02_04_002,
motherName = :NEW.d01,
birthChildWeigth = (select hrb02_04_083
from HRB02_04_04
where d01 = :NEW.cid),
birthChildstature = (select hrb02_04_084
from HRB02_04_04
where d01 = :NEW.cid)
where perid = id2;
end if;
if inserting then
insert into BIR_PERINATAL
(PERID, INHisCode, motherName, birthChildWeigth, birthChildstature)
values
(id1,
:NEW.hrb02_04_002,
:NEW.d01,
(select hrb02_04_083 from HRB02_04_04 where d01 = :NEW.cid),
(select hrb02_04_084 from HRB02_04_04 where d01 = :NEW.cid));
end if;
end;
我想在insert时用遍了id1,即序列的下一个值。update时用id2,序列当前值,实现添加于更新,可是一直编译错误。
说触发器 'CHIS.CHILD_BIRTH' 无效且未通过重新验证。请大家帮忙看下!
after update or insert on HRB02_04_03
FOR EACH ROW
declare
id1 number;
id2 number;
select TEST_SEQ.Nextval into id1 from dual
select TEST_SEQ.Currval into id2 from dual
begin
if updating then
update BIR_PERINATAL
set INHisCode = :NEW.hrb02_04_002,
motherName = :NEW.d01,
birthChildWeigth = (select hrb02_04_083
from HRB02_04_04
where d01 = :NEW.cid),
birthChildstature = (select hrb02_04_084
from HRB02_04_04
where d01 = :NEW.cid)
where perid = id2;
end if;
if inserting then
insert into BIR_PERINATAL
(PERID, INHisCode, motherName, birthChildWeigth, birthChildstature)
values
(id1,
:NEW.hrb02_04_002,
:NEW.d01,
(select hrb02_04_083 from HRB02_04_04 where d01 = :NEW.cid),
(select hrb02_04_084 from HRB02_04_04 where d01 = :NEW.cid));
end if;
end;
我想在insert时用遍了id1,即序列的下一个值。update时用id2,序列当前值,实现添加于更新,可是一直编译错误。
说触发器 'CHIS.CHILD_BIRTH' 无效且未通过重新验证。请大家帮忙看下!
AFTER UPDATE OR INSERT
ON hrb02_04_03
FOR EACH ROW
DECLARE
id1 NUMBER := test_seq.NEXTVAL;
id2 NUMBER := test_seq.CURRVAL;
BEGIN
IF UPDATING
THEN
UPDATE bir_perinatal
SET inhiscode = :NEW.hrb02_04_002,
mothername = :NEW.d01,
birthchildweigth = (SELECT hrb02_04_083
FROM hrb02_04_04
WHERE d01 = :NEW.cid),
birthchildstature = (SELECT hrb02_04_084
FROM hrb02_04_04
WHERE d01 = :NEW.cid)
WHERE perid = id2;
END IF; IF INSERTING
THEN
INSERT INTO bir_perinatal
(perid, inhiscode, mothername, birthchildweigth,
birthchildstature
)
VALUES (id1, :NEW.hrb02_04_002, :NEW.d01, (SELECT hrb02_04_083
FROM hrb02_04_04
WHERE d01 = :NEW.cid),
(SELECT hrb02_04_084
FROM hrb02_04_04
WHERE d01 = :NEW.cid)
);
END IF;
END;