oracle中的trigger
发布时间:2021-02-23 06:27:25 所属栏目:站长百科 来源:网络整理
导读:https://blog.csdn.net/indexman/article/details/8023740/ https://www.cnblogs.com/sharpest/p/7764660.html https://www.cnblogs.com/yaobolove/p/4781971.html ?触发器在数据库里以独立的对象存储,它与存储过程和函数不同的是,存储过程与函数需要用户
3)、当用户对test表执行DML语句时,将相关信息记录到日志表
|
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
??
??
V_TYPE :=
‘INSERT‘
;
??
DBMS_OUTPUT.PUT_LINE(
‘记录已经成功插入,并已记录到日志‘
);
?
ELSIF UPDATING
THEN
??
??
V_TYPE :=
‘UPDATE‘
;
??
DBMS_OUTPUT.PUT_LINE(
‘记录已经成功更新,并已记录到日志‘
);
?
ELSIF DELETING
THEN
??
??
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‘
));
END
;
/
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;
运行结果如下:
(编辑:ASP站长)
【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。