1、bjtu_h_reg_info_del_new】删除触发器 CREATE OR REPLACE TRIGGER bjtu_h_reg_info_del AFTER DELETE ON "HFAN"."BJTU_H_REG_INFO" REFERENCING OLD AS O NEW AS N FOR EACH ROW declare(声明一个变量) h_pay_type varchar2(3);(字符型) (数字型:number) begin select h_patient_type into h_pay_type from bjtu_h_patient
2、 where h_patient_id=:O.h_patient_id; UPDATE bjtu_h_in_stat1 SET h_reg_num = h_reg_num -1 WHERE (in_stat_day = :O.in_hos_date) AND(h_patient_type = h_pay_type) and (h_dep_code = :O.h_dep_code); end; 【bjtu_h_reg_info_ins_new】插入触发器 CREATE OR REPLACE TRIGGER bjtu_h_r
3、eg_info_ins AFTER INSERT ON "HFAN"."BJTU_H_REG_INFO" REFERENCING OLD AS O NEW AS N FOR EACH ROW declare h_pay_type varchar2(3); begin select h_patient_type into h_pay_type from bjtu_h_patient where h_patient_id=:N.h_patient_id; UPDATE bjtu_h_in_stat1 SET h_reg
4、num = h_reg_num + 1(药品分装的时候set 字段 = 值,不加新值) WHERE (in_stat_day = :N.in_hos_date) AND (h_dep_code = :N.h_dep_code)and (h_patient_type = h_pay_type); if SQL%NOTFOUND then INSERT into bjtu_h_in_stat1 (in_stat_day,h_patient_type, h_dep_code, h_reg_num)
5、 VALUES (:N.in_hos_date,h_pay_type,:N.h_dep_code, 1); end if; end; [bjtu_h_reg_info_upd_new]修改触发器 CREATE OR REPLACE TRIGGER bjtu_h_reg_info_upd AFTER UPDATE OF "IN_HOS_DATE","H_DEP_CODE" ON "HFAN"."BJTU_H_REG_INFO" REFERENCING OLD AS O NEW AS N FOR EACH ROW declare
6、 h_pay_type varchar2(3); Begin select h_patient_type into h_pay_type from bjtu_h_patient where h_patient_id=:O.h_patient_id; UPDATE bjtu_h_in_stat1 SET h_reg_num = h_reg_num -1 WHERE (in_stat_day = :O.in_hos_date) and (h_patient_type = h_pay_type) and (h_dep_code
7、 = :O.h_dep_code); select h_patient_type into h_pay_type from bjtu_h_patient where h_patient_id=:N.h_patient_id; UPDATE bjtu_h_in_stat1 SET h_reg_num = h_reg_num + 1 WHERE (in_stat_day = :N.in_hos_date) AND (h_dep_code = :N.h_dep_code)and (h_patient_type =
8、 h_pay_type); if SQL%NOTFOUND then INSERT into bjtu_h_in_stat1 (in_stat_day,h_patient_type, h_dep_code, h_reg_num) VALUES (:N.in_hos_date,h_pay_type,:N.h_dep_code, 1); end if; End ; 【bjtu_c_fee_detail_ins】 CREATE OR REPLACE TRIGGER bjtu_c_fee_detail
9、ins AFTER INSERT ON "HFAN"."BJTU_C_FEE_DETAIL" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin begin UPDATE bjtu_c_patient_acc_fee SET fee_num = fee_num + :N.fee_num WHERE (bjtu_c_patient_acc_fee.c_patient_id =:N.c_patient_id) AND (bjtu_c_patient_acc_fee.c_p
10、atient_seq_id =:N.c_patient_seq_id) AND (bjtu_c_patient_acc_fee.c_reg_date = :N.c_reg_date) AND (bjtu_c_patient_acc_fee.account_type = :N.account_type); if SQL%NOTFOUND then INSERT into bjtu_c_patient_acc_fee (c_patient_id, c_patient_seq_id,
11、 c_reg_date, account_type, fee_num) VALUES (:N.c_patient_id, :N.c_patient_seq_id, :N.c_reg_date, :N.account_type, :N.fee_num); end if; end; end; 【bjtu_c_fee_detail_del】 CREATE OR REPLACE TRIGGER bjt
12、u_c_fee_detail_del AFTER DELETE ON "HFAN"."BJTU_C_FEE_DETAIL" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin begin UPDATE bjtu_c_patient_acc_fee SET fee_num = fee_num - :O.fee_num WHERE (bjtu_c_patient_acc_fee.c_patient_id = :O.c_patient_id) AND (bjtu_c_pati
13、ent_acc_fee.c_patient_seq_id = :O.c_patient_seq_id) AND (bjtu_c_patient_acc_fee.c_reg_date = :O.c_reg_date) AND (bjtu_c_patient_acc_fee.account_type = :O.account_type); end; end; 【bjtu_c_fee_detail_upd】 CREATE OR REPLACE TRIGGER bjtu_c_fee_detail_upd AFTER UPDATE OF "A
14、CCOUNT_TYPE", "FEE_NUM" ON "HFAN"."BJTU_C_FEE_DETAIL" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin begin UPDATE bjtu_c_patient_acc_fee SET fee_num = fee_num - :O.fee_num WHERE (bjtu_c_patient_acc_fee.c_patient_id = :O.c_patient_id) AND (bjtu_c_patient_acc_fee
15、c_patient_seq_id = :O.c_patient_seq_id) AND (bjtu_c_patient_acc_fee.c_reg_date = :O.c_reg_date) AND (bjtu_c_patient_acc_fee.account_type = :O.account_type); end; begin UPDATE bjtu_c_patient_acc_fee SET fee_num = fee_num + :N.fee_num WHERE (bjtu_c_patie
16、nt_acc_fee.c_patient_id = :N.c_patient_id) AND (bjtu_c_patient_acc_fee.c_patient_seq_id = :N.c_patient_seq_id) AND (bjtu_c_patient_acc_fee.c_reg_date = :N.c_reg_date) AND (bjtu_c_patient_acc_fee.account_type = :N.account_type); if SQL%NOTFOUND then INSERT into
17、 bjtu_c_patient_acc_fee (c_patient_id, c_patient_seq_id, c_reg_date, account_type, fee_num) VALUES (:N.c_patient_id, :N.c_patient_seq_id, :N.c_reg_date, :N.account_type, :N.fee_num); end if; end; end; 【bjtu_c_patient_
18、del】 CREATE OR REPLACE TRIGGER bjtu_c_patient_del AFTER DELETE ON "HFAN"."BJTU_C_PATIENT" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE bjtu_c_patient_type SET c_patient_type_num = c_patient_type_num - 1 WHERE bjtu_c_patient_type.c_patient_type = :O.c_patient
19、type; end; 【bjtu_c_patient_ins】 CREATE OR REPLACE TRIGGER bjtu_c_patient_ins AFTER INSERT ON "HFAN"."BJTU_C_PATIENT" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE bjtu_c_patient_type SET c_patient_type_num = c_patient_type_num+1 WHERE bjtu_c_patient_typ
20、e.c_patient_type = :N.c_patient_type; end; 【bjtu_c_patient_upd】 CREATE OR REPLACE TRIGGER bjtu_c_patient_upd AFTER UPDATE OF "C_PATIENT_TYPE" ON "HFAN"."BJTU_C_PATIENT" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE bjtu_c_patient_type SET c_patient_type_num =
21、 c_patient_type_num - 1 WHERE bjtu_c_patient_type.c_patient_type = :O.c_patient_type; UPDATE bjtu_c_patient_type SET c_patient_type_num = c_patient_type_num+1 WHERE bjtu_c_patient_type.c_patient_type = :N.c_patient_type; end; 【bjtu_c_reg_info_del】 CREATE OR RE
22、PLACE TRIGGER bjtu_c_reg_info_del AFTER DELETE ON "HFAN"."BJTU_C_REG_INFO" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin begin UPDATE bjtu_c_reg_dep_stat SET c_reg_num = c_reg_num - 1 WHERE (bjtu_c_reg_dep_stat.c_stat_day = :O.c_reg_date) AND (bjtu_c_reg_dep_stat
23、c_reg_type = :O.c_reg_type) AND (bjtu_c_reg_dep_stat.h_dep_code = :O.h_dep_code); end; end; 【bjtu_c_reg_info_ins】 CREATE OR REPLACE TRIGGER bjtu_c_reg_info_ins AFTER INSERT ON "HFAN"."BJTU_C_REG_INFO" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin begin UPDATE bjtu_c_
24、reg_dep_stat SET c_reg_num = c_reg_num + 1 WHERE (bjtu_c_reg_dep_stat.c_stat_day = :N.c_reg_date) AND (bjtu_c_reg_dep_stat.c_reg_type = :N.c_reg_type) AND (bjtu_c_reg_dep_stat.h_dep_code = :N.h_dep_code); if SQL%NOTFOUND then INSERT into bjtu_c_reg_dep_stat
25、 (c_stat_day, c_reg_type, h_dep_code, c_reg_num) VALUES (:N.c_reg_date, :N.c_reg_type, :N.h_dep_code, 1); end if; end; end; 【bjtu_c_reg_info_upd】 CREATE OR REPLACE TRIGGER bjtu_c_reg_info_upd AFTER UPDATE OF "C_REG_TYPE","H_DEP_CODE" ON "HFAN"."BJTU_C_REG_
26、INFO" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE bjtu_c_reg_dep_stat SET c_reg_num = c_reg_num - 1 WHERE (bjtu_c_reg_dep_stat.c_stat_day = :O.c_reg_date) AND (bjtu_c_reg_dep_stat.c_reg_type = :O.c_reg_type) AND (bjtu_c_reg_dep_stat.h_dep_code = :O.h_dep_code)
27、 begin UPDATE bjtu_c_reg_dep_stat SET c_reg_num = c_reg_num + 1 WHERE (bjtu_c_reg_dep_stat.c_stat_day = :N.c_reg_date) AND (bjtu_c_reg_dep_stat.c_reg_type = :N.c_reg_type) AND (bjtu_c_reg_dep_stat.h_dep_code = :N.h_dep_code); if SQL%NOTFOUND then IN
28、SERT into bjtu_c_reg_dep_stat (c_stat_day, c_reg_type, h_dep_code, c_reg_num) VALUES (:N.c_reg_date, :N.c_reg_type, :N.h_dep_code, 1); end if; end; end; 【bjtu_h_reg_info_del】 CREATE OR REPLACE TRIGGER bjtu_h_reg_info_del AFTER DELETE ON "HFAN"."BJTU_H_REG_INFO"
29、REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE bjtu_h_in_stat SET h_reg_num = h_reg_num -1 WHERE (in_stat_day = :O.in_hos_date) AND (h_dep_code = :O.h_dep_code); end; 【bjtu_h_reg_info_ins】 CREATE OR REPLACE TRIGGER bjtu_h_reg_info_ins AFTER INSERT ON "HFAN"."
30、BJTU_H_REG_INFO" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin begin UPDATE bjtu_h_in_stat SET h_reg_num = h_reg_num + 1 WHERE (in_stat_day = :N.in_hos_date) AND (h_dep_code = :N.h_dep_code); if SQL%NOTFOUND then INSERT into bjtu_h_in_stat
31、 (in_stat_day, h_dep_code, h_reg_num) VALUES (:N.in_hos_date, :N.h_dep_code, 1); end if; end; end; 【bjtu_h_reg_info_upd】 CREATE OR REPLACE TRIGGER bjtu_h_reg_info_upd AFTER UPDATE OF "IN_HOS_DATE","H_DEP_CODE" ON "HFAN"."BJTU_H_REG_INFO" REFERENCING OLD AS O NEW AS
32、 N FOR EACH ROW Begin UPDATE bjtu_h_in_stat SET h_reg_num = h_reg_num -1 WHERE (in_stat_day = :O.in_hos_date) AND (h_dep_code = :O.h_dep_code); begin UPDATE bjtu_h_in_stat SET h_reg_num = h_reg_num + 1 WHERE (in_stat_day = :N.in_hos_date) AND
33、 (h_dep_code = :N.h_dep_code); if SQL%NOTFOUND then INSERT into bjtu_h_in_stat (in_stat_day, h_dep_code, h_reg_num) VALUES (:N.in_hos_date, :N.h_dep_code, 1); end if; end; End ; 插入触发器0 CREATE OR REPLACE TRIGGER ic_id_def_ins AFTER INSERT ON "HFA
34、N"."IC_ID_DEF" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE ic_pay_type SET p_num = p_num+1 WHERE ic_pay_type.pay_type = :N.pay_type; end; 插入触发器1 CREATE OR REPLACE TRIGGER ic_id_def_ins AFTER INSERT ON "HFAN"."IC_ID_DEF" REFERENCING OLD AS O NEW AS N FOR
35、 EACH ROW declare stat_day varchar2(10); begin select to_char(sysdate, 'yyyy/mm/dd') into stat_day from dual; UPDATE ic_pay_type SET p_num = p_num+1 WHERE ic_pay_type.pay_type = :N.pay_type; begin UPDATE bjtu_c_reg_dep_stat SET c_reg_num = c_reg_num+1
36、 WHERE ( bjtu_c_reg_dep_stat.c_stat_day = :N.c_reg_date ) AND ( bjtu_c_reg_dep_stat.c_reg_type = :N.c_reg_type ) AND ( bjtu_c_reg_dep_stat.h_dep_code = :N.h_dep_code ) ; if SQL%NOTFOUND then INSERT bjtu_c_reg_dep_stat ( c_stat_day,
37、 c_reg_type, h_dep_code, c_reg_num) VALUES ( :N.c_reg_date, :N.c_reg_type, :N.h_dep_code, 1 ) ; end if; end; end; 删除触发器0 CREATE OR REPLACE TRIGGER ic_id_def_del AFTER DELETE ON "HFAN"."IC_ID_DEF" REFER
38、ENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE ic_pay_type SET p_num = p_num - 1 WHERE ic_pay_type.pay_type = :O.pay_type; end; 删除触发器1 CREATE OR REPLACE TRIGGER ic_id_def_del AFTER DELETE ON "HFAN"."IC_ID_DEF" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin
39、UPDATE ic_pay_type SET p_num = p_num - 1 WHERE ic_pay_type.pay_type = :O.pay_type; UPDATE ic_id_stat SET p_num = p_num - 1 WHERE ( ic_id_stat.st_day = :O.reg_day ) AND ( ic_id_stat.pay_type = :O.pay_type ) ; end; 修改触发器0 CREATE OR RE
40、PLACE TRIGGER ic_id_def_upd AFTER UPDATE OF "PAY_TYPE" ON "HFAN"."IC_ID_DEF" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE ic_pay_type SET p_num = p_num - 1 WHERE ic_pay_type.pay_type = :O.pay_type; UPDATE ic_pay_type SET p_num = p_num + 1
41、 WHERE ic_pay_type.pay_type = :N.pay_type; end; 修改触发器1 CREATE OR REPLACE TRIGGER ic_id_def_upd AFTER UPDATE OF "PAY_TYPE","REG_DAY" ON "HFAN"."IC_ID_DEF" REFERENCING OLD AS O NEW AS N FOR EACH ROW begin UPDATE ic_pay_type SET p_num = p_num + 1 WHERE ic_
42、pay_type.pay_type = :N.pay_type; UPDATE ic_pay_type SET p_num = p_num - 1 WHERE ic_pay_type.pay_type = :O.pay_type; UPDATE ic_id_stat SET p_num = p_num - 1 WHERE ( ic_id_stat.st_day = :O.reg_day ) AND ( ic_id_stat.pay_type
43、 = :O.pay_type ) ; UPDATE ic_id_stat SET p_num = p_num + 1 WHERE ( ic_id_stat.st_day = :N.reg_day ) AND ( ic_id_stat.pay_type = :N.pay_type ) ; end; 脚本 INSERT INTO ic_id_def ( ic_id, p_name, id_def,
44、 address, tel_no, pay_type ) VALUES ( 100, '张三', null, null, null, '01' ) ; commit; INSERT INTO ic_id_def ( ic_id,
45、 p_name, id_def, address, tel_no, pay_type, reg_day ) VALUES ( 100, '张三', null, null, null, '01', to_char(sysdate, 'yyyy/mm
46、/dd') ) ; c select * from bjtu_c_patient; INSERT INTO bjtu_c_patient ( c_patient_id, c_patient_name, c_patient_age, c_patient_address, c_patient_tel, c_patient_type, c_patient_reg_date,
47、 c_patient_seq_id ) VALUES ( '0008', '李六', 19, '22222', '133325366333', '02', '2012/12/12', null ) ; select count(c_patient_id) from bjtu_c_patient where c_patient_type='01'
48、 select c_patient_type_num from bjtu_c_patient_type where c_patient_type='01'; select sum(c_patient_type_num) from bjtu_c_patient_type DELETE FROM bjtu_c_patient WHERE bjtu_c_patient.c_patient_id = '0008' ; UPDATE bjtu_c_patient SET c_patient_type = '02' WHERE bjtu_c_patient.c_patient_id = '0001' ; 12
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818