創(chuàng)建兩個(gè)表:
站在用戶的角度思考問題,與客戶深入溝通,找到柯橋網(wǎng)站設(shè)計(jì)與柯橋網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋柯橋地區(qū)。
create?table?a
(stdid?int,
stdname?varchar2(10));
create?table?b
(stdid?int,
stdname?varchar2(10));
創(chuàng)建觸發(fā)器:
CREATE?OR?REPLACE?TRIGGER?tr_insert?
after?insert
ON?a
FOR?EACH?ROW?
BEGIN
INSERT?INTO?b(stdid,stdname)
VALUES(:new.stdid,:new.stdname);
END;
驗(yàn)證,在a表中插入數(shù)據(jù):
insert?into?a?values?(1,'a');
commit;
驗(yàn)證b表結(jié)果:
創(chuàng)建觸發(fā)器,給觸發(fā)器命名,在哪個(gè)表上的增刪改進(jìn)行觸發(fā),是否為行級(jí)觸發(fā)
編寫你的邏輯
編譯檢查是否有語法錯(cuò)誤啥的
測(cè)試,這里的話,就是你某一個(gè)工種的最低工資增加,那屬于這個(gè)工種的員工中原來是最低工資的也要增加,所以你要先把工種中最低工資查出來,根據(jù)工種號(hào),查詢屬于該工種的人有哪些,把這些員工的工資查出來,再修改工種的最低工資,再查員工工資是否也增加了。
你這表也沒有,我門也沒有辦法給你寫一個(gè)很詳細(xì)的。大致思路一般是這樣
1
創(chuàng)建table1:
CREATE
TABLE
table1
(
id
number(5),
name
char(20),
age
number(2),
);
2
創(chuàng)建table2,并給count字段初值為0
CREATE
TABLE
table2
(
count
number(5),
);
INSERT
INTO
table2
VALUES
(0);
3
插入觸發(fā)器
CREATE
OR
REPLACE
TRIGGER
add_after_insert
AFTER
INSERT
ON
table1
FOR
EACH
ROW
DECLARE
v_currentCount
number(5);
BEGIN
SELECT
count
INTO
v_currentCount
FROM
table2;
UPDATE
table2
SET
count
=
v_currentCount
+1;
END
4
刪除觸發(fā)器
CREATE
OR
REPLACE
TRIGGER
add_after_delete
AFTER
DELETE
ON
table1
FOR
EACH
ROW
DECLARE
v_currentCount
number(5);
BEGIN
SELECT
count
INTO
v_currentCount
FROM
table2;
UPDATE
table2
SET
count
=
v_currentCount
+1;
END
5
更新觸發(fā)器
CREATE
OR
REPLACE
TRIGGER
add_after_update
AFTER
UPDATE
ON
table1
FOR
EACH
ROW
DECLARE
v_currentCount
number(5);
BEGIN
SELECT
count
INTO
v_currentCount
FROM
table2;
UPDATE
table2
SET
count
=
v_currentCount
+1;
END
一般在sqlplus或者其他第三方oracle工具中,按照語法及需求寫好代碼,直接執(zhí)行創(chuàng)建過程即可。
一般語法如下:
CREATE?[OR?REPLACE]?TRIGGER?trigger_name
{BEFORE?|?AFTER?}
{INSERT?|?DELETE?|?UPDATE?[OF?column?[,?column?…]]}
[OR?{INSERT?|?DELETE?|?UPDATE?[OF?column?[,?column?…]]}...]
ON?[schema.]table_name?|?[schema.]view_name?
[REFERENCING?{OLD?[AS]?old?|?NEW?[AS]?new|?PARENT?as?parent}]
[FOR?EACH?ROW?]
[WHEN?condition]
PL/SQL_BLOCK?|?CALL?procedure_name;
我以前做的一個(gè)例子,你參考下吧第八章觸發(fā)器(Trigger)--格式:createorreplacetrigger名稱[after|before][delete|update|insert][on表|onschema][referencingnewas別名oldas別名][foreachrow]declare.beginexception.end;--創(chuàng)建一個(gè)delete類型行級(jí)觸發(fā)器--刪除的一行數(shù)據(jù)保存在:oldcreateorreplacetriggeremp_delete_row_triggerafterdeleteonempreferencingnewasnoldasoforeachrowbegindbms_output.put_line('emp_delete_row_triggercalled.');dbms_output.put_line('刪除員工:'||:o.empno||''||:o.ename);end;deletefromempwhereempno=7499;deletefromemp;--創(chuàng)建一個(gè)insert類型行級(jí)觸發(fā)器--插入的一行新數(shù)據(jù)保存在:newcreateorreplacetriggeremp_insert_row_triggerafterinsertonempforeachrowbegindbms_output.put_line('emp_insert_row_triggercalled.');dbms_output.put_line('添加員工:'||:new.empno||''||:new.ename);end;insertintoemp(empno,ename)values(1,'empxxx');--創(chuàng)建一個(gè)update類型行級(jí)觸發(fā)器--修改前的數(shù)據(jù)保存在:old--修改后的數(shù)據(jù)保存在:newcreateorreplacetriggeremp_update_row_triggerafterupdateonempforeachrowbegindbms_output.put_line('emp_update_row_triggercalled.');dbms_output.put_line('修改前:'||:old.empno||''||:old.ename);dbms_output.put_line('修改后:'||:new.empno||''||:new.ename);end;updateempsetename='xxxx'whereempno=7499;--語句級(jí)觸發(fā)器(update,delete,insert)createorreplacetriggerdelete_stmt_triggerafterdeleteonempbegindbms_output.put_line('delete_stmt_triggercalled.');end;deletefromemp;--判斷觸發(fā)器類型------------------------------------------------------------每進(jìn)行一次交易,就要調(diào)用觸發(fā)器,自動(dòng)扣除或增加賬戶金額----------------------------------------------------------createtableaccount(customerNamevarchar2(30)primarykey,cardIDvarchar2(8),currentMoneynumber);insertintoaccountvalues('Daivd','10010001',5000);insertintoaccountvalues('Jason','10010002',3000);createtabletrans(transDatedate,cardIDvarchar2(8),transTypevarchar2(10),transMoneynumber);insertintotransvalues(sysdate,'10010001','取款',1000);createorreplacetriggertrans_triggerbeforeinsertontransforeachrowdeclarev_currentMoneyaccount.currentMoney%type;begin--判斷類型if:new.transType='取款'then--取款selectcurrentMoneyintov_currentMoneyfromaccountwherecardID=:new.cardID;ifv_currentMoney:new.transMoneythenraise_application_error(-20001,'余額不足');endif;updateaccountsetcurrentMoney=currentMoney-:new.transMoneywherecardID=:new.cardID;else--存款updateaccountsetcurrentMoney=currentMoney+:new.transMoneywherecardID=:new.cardID;endif;exceptionwhenno_data_foundthenraise_application_error(-20002,'無效的帳戶');end;--模式(schema)級(jí)觸發(fā)器createorreplacetriggerschema_triggerbeforedroponschemabegindbms_output.put_line('schema_triggercalled');dbms_output.put_line(ora_dict_obj_name);dbms_output.put_line(ora_dict_obj_type);ifora_dict_obj_name='ACCOUNT'thenraise_application_error(-20003,'ACCOUNT表不能被刪除');endif;end;droptableaccount;--ora_dict_obj_name操作對(duì)象名稱--ora_dict_obj_type操作對(duì)象類型--啟用觸發(fā)器altertriggerschema_triggerenable;--禁用觸發(fā)器altertriggerschema_triggerdisable;
第二步 插入測(cè)試數(shù)據(jù)
第三步 創(chuàng)建觸發(fā)器
第四步 測(cè)試
結(jié)果如下圖
分享文章:觸發(fā)器怎么做oracle 觸發(fā)器怎么做開局一會(huì)開門,迷你世界,截圖
本文URL:http://www.rwnh.cn/article36/hicipg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站策劃、品牌網(wǎng)站建設(shè)、品牌網(wǎng)站制作、網(wǎng)站導(dǎo)航、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)