91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ORACLE 觸發器語法有哪些以及實例分析

發布時間:2021-11-04 17:16:37 來源:億速云 閱讀:408 作者:柒染 欄目:建站服務器

ORACLE 觸發器語法有哪些以及實例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

SELECT * FROM dept_sal;

實例1

--創建觸發器,它記錄表的刪除數據

--創建表

CREATE TABLE employee

(

 id    VARCHAR2(4)  NOT NULL,

 name VARCHAR2(15) NOT NULL,

 age  NUMBER(2)     NOT NULL,

 sex  CHAR          NOT NULL

);

DESC employee;

--插入數據

INSERT INTO employee VALUES('e101','zhao',23,'M');

INSERT INTO employee VALUES('e102','jian',21,'F');

--創建記錄表

CREATE TABLE old_employee AS

 SELECT * FROM employee;

DESC old_employee;

--創建觸發器

CREATE OR REPLACE TRIGGER tig_old_emp

AFTER DELETE ON employee  --

FOR EACH ROW  --語句級觸發,即每一行觸發一次

BEGIN

 INSERT INTO old_employee

   VALUES(:old.id,:old.name,:old.age,:old.sex);  --:old代表舊值

END;

/

--下面進行測試

DELETE employee;

SELECT * FROM old_employee;

實例2

--創建觸發器,利用視圖插入數據

--創建表

CREATE TABLE tab1 (tid NUMBER(4) PRIMARY KEY,tname VARCHAR2(20),tage NUMBER(2));

CREATE TABLE tab2 (tid NUMBER(4),ttel VARCHAR2(15),tadr VARCHAR2(30));

--插入數據

INSERT INTO tab1 VALUES(101,'zhao',22);

INSERT INTO tab1 VALUES(102,'yang',20);

INSERT INTO tab2 VALUES(101,'13761512841','AnHuiSuZhou');

INSERT INTO tab2 VALUES(102,'13563258514','AnHuiSuZhou');

--創建視圖連接兩張表

CREATE VIEW tab_view AS

 SELECT tab1.tid,tname,ttel,tadr FROM tab1,tab2

   WHERE tab1.tid = tab2.tid;

--創建觸發器

CREATE OR REPLACE TRIGGER tab_trigger

INSTEAD OF INSERT ON tab_view

BEGIN

 INSERT INTO tab1(tid,tname) VALUES(:new.tid,:new.tname);

 INSERT INTO tab2(ttel,tadr) VALUES(:new.ttel,:new.tadr);

END;

/

--現在就可以利用視圖插入數據

INSERT INTO tab_view VALUES(105,'zhaoyang','13886681288','beijing');

--查看效果

SELECT * FROM tab_view;

實例3

--創建觸發器,比較emp表中更新的工資

CREATE OR REPLACE TRIGGER sal_emp

BEFORE UPDATE ON emp

FOR EACH ROW

BEGIN

 IF :OLD.sal > :NEW.sal THEN

   DBMS_OUTPUT.PUT_LINE('工資減少');

 ELSIF :OLD.sal < :NEW.sal THEN

   DBMS_OUTPUT.PUT_LINE('工資增加');

 ELSE

   DBMS_OUTPUT.PUT_LINE('工資未作任何變動');

 END IF;

 DBMS_OUTPUT.PUT_LINE('更新前工資 ' || :OLD.sal);

 DBMS_OUTPUT.PUT_LINE('更新后工資 ' || :NEW.sal);

END;

/

--執行UPDATE查看效果

UPDATE emp SET sal = 3000 WHERE empno = '7788';

實例4

--創建觸發器,將操作CREATEDROP存儲在log_info

--創建表

CREATE TABLE log_info

(

 manager_user VARCHAR2(15),

 manager_date VARCHAR2(15),

 manager_type VARCHAR2(15),

 obj_name VARCHAR2(15),

 obj_type VARCHAR2(15)

);

--創建觸發器

CREATE OR REPLACE TRIGGER trig_log_info

AFTER CREATE OR DROP ON SCHEMA

BEGIN

 INSERT INTO log_info

   VALUES(USER,SYSDATE,SYS.DICTIONARY_OBJ_NAME,SYS.DICTIONARY_OBJ_OWNER,

    SYS.DICTIONARY_OBJ_TYPE);

END;

/

--測試語句

CREATE TABLE a(id NUMBER);

CREATE TYPE aa AS OBJECT(id NUMBER);

/

DROP TABLE a;

DROP TYPE aa;

--查看效果

SELECT * FROM log_info;

 

 

SELECT * FROM USER_TRIGGERS;

SELECT * FROM ALL_TRIGGERS;

SELECT * FROM DBA_TRIGGERS;  --必須以DBA身份登陸才能使用此數據字典

--啟用和禁用

ALTER TRIGGER trigger_name DISABLE;

ALTER TRIGGER trigger_name ENABLE;

關于ORACLE 觸發器語法有哪些以及實例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新余市| 安新县| 隆化县| 林口县| 永新县| 孟州市| 婺源县| 大足县| 含山县| 扬中市| 铁岭市| 伽师县| 平原县| 灵寿县| 营山县| 容城县| 醴陵市| 寿阳县| 蓝山县| 环江| 常熟市| 渭南市| 香河县| 龙口市| 宜宾市| 麟游县| 大埔区| 巍山| 维西| 教育| 琼中| 尖扎县| 武强县| 阜康市| 永德县| 阿克陶县| 广东省| 漳州市| 集安市| 南和县| 青川县|