oralce觸發器解決問題
*
1、 表 TJDWJBXX1 (體檢單位基本資訊)結構如下:
BIANH MINGXH DANWMC TIJMC
(編號) (明細號) (單位名稱) ( 體檢名稱 )
現在我提交資料庫一組資料 如下:
BIANH MINGXH DANWMC TIJMC
(編號) (明細號) (單位名稱) ( 體檢名稱 )
00000001 012 教育局 一般檢查
2、這裡的“一般檢查”專案包括 視力檢查 血型檢查 和鋇餐
一般檢查的內容如下兩個表關聯(TJSFXM XYCFMX):
TJSFXM(體檢收費專案)
BAINH MINGC DANJ
(編號) (名稱) (單價)
0000002 一般檢查 10
XYCFMX(協議處方明細)
BIANH MINGC ZHIXKS
000002 視力檢查 五官科
000002 血型檢查 檢驗科
000002 鋇餐 放射科
3、表 TJDWJZD(體檢單位記帳單) 結構如下
DANWMC DWMCXH XIANGMXH TIJXM TIJXMBH ZHIXKS
單位名稱 單位序號 專案序號 體檢專案 體檢專案編號 執行科室
當我向TJDWJBXX1 (體檢單位基本資訊)插入一組資料後
如:插入這組資料
BIANH MINGXH DANWMC TIJMC
(編號) (明細號) (單位名稱) ( 體檢名稱 )
00000001 012 教育局 一般檢查
表 TJDWJZD(體檢單位記帳單) 就自動提交如下資料
DANWMC DWMCXH XIANGMXH TIJXM TIJXMBH ZHIXKS
教育局 012 01 視力檢查 000002 五官科
教育局 012 02 血型檢查 000002 檢驗科
教育局 012 03 鋇餐 000002 放射科
*/
/*
create table TJDWJBXX1 --體檢單位基本資訊
(
BIANH nvarchar(20),
MINGXH nvarchar(20),
DANWMC nvarchar(20),
TIJMC nvarchar(20)
)
select * from TJSFXM
create table TJSFXM --體檢收費專案
(
BAINH nvarchar(20),
MINGC nvarchar(20),
DANJ nvarchar(20)
)
select * from XYCFMX
create table XYCFMX --協議處方明細
(
BAINH nvarchar(20),
MINGC nvarchar(20),
ZHIXKS nvarchar(20)
)
create table TJDWJZD --體檢單位基本資訊
(
DANWMC nvarchar(20),
DWMCXH nvarchar(20),
XIANGMXH nvarchar(20),
TIJXM nvarchar(20),
TIJXMBH nvarchar(20),
ZHIXKS nvarchar(20)
)*/
--insert into TJSFXM values('0000002','一般檢查','10')
/*
insert into XYCFMX
select '0000002','視力檢查','五官科' union all
select '0000002','血型檢查','檢驗科' union all
select '0000002','鋇餐','放射科'
*/
create trigger tri_TJDWJBXX1
ON TJDWJBXX1
FOR update ,insert,delete
AS
BEGIN
declare @MINGXH varchar(20)
declare @DANWMC varchar(20)
declare @TIJMC varchar(20)
--取編碼BAINH
declare @BAINH1 varchar(20)
--檢查專案
declare @BIANH2 varchar(20)
declare @MINGC2 varchar(20)
declare @ZHIXKS varchar(20)
declare @i int
set @i=1
--取出要插入的資料
SELECT @MINGXH=MINGXH,@DANWMC=DANWMC,@TIJMC=TIJMC FROM INSERTED
--取“一般檢查對應的編碼
SELECT @BAINH1=BAINH FROM TJSFXM WHERE MINGC=@TIJMC
--取“編碼所檢查的專案” 定義遊標
DECLARE tmpcur CURSOR FOR SELECT BAINH, MINGC,ZHIXKS FROM XYCFMX WHERE BAINH=@BAINH1
OPEN tmpcur
FETCH NEXT FROM tmpcur INTO @BIANH2,@MINGC2,@ZHIXKS
WHILE @@FETCH_STATUS=0
BEGIN
INSERT INTO TJDWJZD (DANWMC, DWMCXH, XIANGMXH ,TIJXM, TIJXMBH, ZHIXKS)
VALUES(@DANWMC,@MINGXH,@i,@MINGC2,@BIANH2,@ZHIXKS)
SET @i=@i+1
FETCH NEXT FROM tmpcur INTO @BIANH2,@MINGC2,@ZHIXKS
END
CLOSE tmpcur
DEALLOCATE tmpcur
END
insert into TJDWJBXX1 VALUES('00000001','012','教育局','一般檢查')
+++++++++++++++++++++++++++++++++++++++++++++
[@more@]oralce觸發器解決問題程式碼:
如果是oracle的
SQL> create table TJDWJBXX1 (BIANH varchar2(20),MINGXH varchar2(20), DANWMC varchar2(20), TIJMC varchar2(20));
Table created
SQL> create table TJSFXM (BAINH varchar2(20), MINGC varchar2(20), DANJ number(10,2));
Table created
SQL> insert into TJSFXM values ('000002' ,'一般檢查', 10);
1 row inserted
SQL> create table XYCFMX (BIANH varchar2(20),MINGC varchar2(20), ZHIXKS varchar2(20));
Table created
SQL> insert into XYCFMX values ('000002', '視力檢查', '五官科');
1 row inserted
SQL> insert into XYCFMX values ('000002', '血型檢查', '檢驗科');
1 row inserted
SQL> insert into XYCFMX values ('000002', '鋇餐', '放射科');
1 row inserted
SQL> create table TJDWJZD (DANWMC varchar2(20), DWMCXH varchar2(20),XIANGMXH varchar2(20),TIJXM varchar2(20),
2 TIJXMBH varchar2(20),ZHIXKS varchar2(20));
Table created
SQL> create or replace trigger tr_TJDWJBXX1 before insert on TJDWJBXX1
2 for each row
3 begin
4 for x in
5 (select decode(length(rownum),1,'0'||rownum,to_char(rownum)) rn,BIANH, MINGC, ZHIXKS
6 from XYCFMX
7 where BIANH = (select bianh from TJSFXM where MINGC = :new.TIJMC)) loop
8 insert into TJDWJZD(DANWMC, DWMCXH, XIANGMXH, TIJXMBH, TIJXM, ZHIXKS)
9 Values (:new.DANWMC,:new.MINGXH,x.rn,x.BIANH, x.MINGC, x.ZHIXKS);
10 end loop;
11 end tr_TJDWJBXX1;
12 /
Trigger created
SQL> insert into TJDWJBXX1 values ('00000001', '012', '教育局', '一般檢查');
1 row inserted
SQL> commit;
Commit complete
SQL> select * from TJSFXM;
BAINH MINGC DANJ -------------------- -------------------- ------------ 000002 一般檢查 10.00
SQL> select * from TJDWJZD;
DANWMC DWMCXH XIANGMXH TIJXM TIJXMBH ZHIXKS -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- 教育局 012 01 視力檢查 000002 五官科
教育局 012 02 血型檢查 000002 檢驗科
教育局 012 03 鋇餐 000002 放射科
SQL>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/101162/viewspace-927334/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 高階 | 用儲存過程、定時器、觸發器來解決資料分析問題MySql儲存過程定時器觸發器
- Axure解決列表項中"觸發內部元件互動"的衝突問題元件
- OGG同步複製時與相容觸發器解決方法觸發器
- SQL Server:觸發器詳解SQLServer觸發器
- 阿里雲伺服器不能發郵件問題解決方案阿里伺服器
- CheckBox、ToggleSwitch 程式碼修改 自動觸發 onclick的問題,把onclick的邏輯 寫在onmouseup裡 解決問題
- 瞭解SQL Server觸發器及觸發器中的事務AWSQLServer觸發器
- 解決syslog伺服器啟動問題伺服器
- 支付寶支付回撥觸發問題
- window.onload 觸發時機問題
- SQL觸發器例項講解SQL觸發器
- 用分散式鎖解決併發問題分散式
- 雲伺服器中文亂碼問題解決伺服器
- tomcat 7伺服器跨域問題解決Tomcat伺服器跨域
- 怎麼解決伺服器延遲問題伺服器
- 通過解讀WPF觸控原始碼,分析WPF插拔裝置觸控失效的問題(問題篇)原始碼
- 提問題比解決問題更重要
- 資料編號+1 併發問題解決
- 低程式碼開發可以解決哪些問題
- gulp外掛解決瀏覽器快取問題瀏覽器快取
- vmware ubuntu虛擬機器問題彙總解決Ubuntu虛擬機
- RPA機器人解決企業什麼問題機器人
- angular瀏覽器相容性問題解決方案Angular瀏覽器
- 微服務閘道器 gateway 跨域問題解決微服務Gateway跨域
- 代理伺服器的連線問題及解決伺服器
- 一文解決瀏覽器跨域問題瀏覽器跨域
- 解決伺服器被黑上不了網的問題伺服器
- 布隆過濾器解決快取穿透問題過濾器快取穿透
- 在After Insert觸發器中使用INSERT後,影響SCOPE_IDENTITY 問題觸發器IDE
- 解決跨域問題跨域
- SERVICE問題解決方法
- 解決 Unexpectedlexicaldeclarationincaseblock的問題BloC
- 解決mapper重名問題APP
- qeephp 解決跨越問題PHP
- 解決高度塌陷問題
- WPF Command CanExecute 觸發一次的問題
- touch事件和click事件多次觸發的問題事件
- mysql觸發器MySql觸發器
- D觸發器觸發器