oracle中的trigger
发布时间:2021-01-31 21:15:37 所属栏目:百科 来源:网络整理
导读:副标题#e# https://blog.csdn.net/indexman/article/details/8023740/ https://www.cnblogs.com/sharpest/p/7764660.html https://www.cnblogs.com/yaobolove/p/4781971.html ?触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函
1
2
3
4
5
6
7
8
9
10
11
12
13
--创建测试表
CREATE
?
TABLE
?
test(
??
t_id? NUMBER(4),
??
t_name VARCHAR2(20),
??
t_age NUMBER(2),
??
t_sex
CHAR
);
--创建记录测试表
CREATE
?
TABLE
?
test_log(
??
l_user? VARCHAR2(15),
??
l_type? VARCHAR2(15),
??
l_date? VARCHAR2(30)
);
创建触发器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31--创建触发器
CREATE
?
OR
?
REPLACE
?
TRIGGER
?
TEST_TRIGGER
?
AFTER
?
DELETE
?
OR
?
INSERT
?
OR
?
UPDATE
?
ON
?
TEST
DECLARE
?
V_TYPE TEST_LOG.L_TYPE%TYPE;
BEGIN
?
IF INSERTING
THEN
??
--INSERT触发
??
V_TYPE :=
‘INSERT‘
;
??
DBMS_OUTPUT.PUT_LINE(
‘记录已经成功插入,并已记录到日志‘
);
?
ELSIF UPDATING
THEN
??
--UPDATE触发
??
V_TYPE :=
‘UPDATE‘
;
??
DBMS_OUTPUT.PUT_LINE(
‘记录已经成功更新,并已记录到日志‘
);
?
ELSIF DELETING
THEN
??
--DELETE触发
??
V_TYPE :=
‘DELETE‘
;
??
DBMS_OUTPUT.PUT_LINE(
‘记录已经成功删除,并已记录到日志‘
);
?
END
?
IF;
?
INSERT
?
INTO
?
TEST_LOG
?
VALUES
??
(
USER
,V_TYPE,TO_CHAR(SYSDATE,
‘yyyy-mm-dd hh24:mi:ss‘
));
--USER表示当前用户名
END
;
/
--下面我们来分别执行DML语句
INSERT
?
INTO
?
test
VALUES
(101,
‘zhao‘
,22,
‘M‘
);
UPDATE
?
test
SET
?
t_age = 30
WHERE
?
t_id = 101;
DELETE
?
test
WHERE
?
t_id = 101;
--然后查看效果
SELECT
?
*
FROM
?
test;
SELECT
?
*
FROM
?
test_log;
运行结果如下:
(编辑:上海站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
3)、当用户对test表执行DML语句时,将相关信息记录到日志表 |
站长推荐
热点阅读