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,我们将及时予以处理。