【Oracle】存储过程和触发器
warning:
这篇文章距离上次修改已过429天,其中的内容可能已经有所变动。
问题描述不够具体,但我可以提供一个简单的Oracle存储过程和触发器的例子。
假设我们有一个简单的employees表,包含employee_id和employee_name字段,我们想要记录每次插入操作的细节。
首先,创建一个用于记录日志的表:
CREATE TABLE employee_audit (
audit_id NUMBER PRIMARY KEY,
action VARCHAR2(50),
employee_id NUMBER,
employee_name VARCHAR2(100),
audit_timestamp TIMESTAMP
);接下来,创建一个存储过程来插入新员工信息到employees表并记录日志:
CREATE OR REPLACE PROCEDURE insert_employee(
p_employee_id IN NUMBER,
p_employee_name IN VARCHAR2
) AS
BEGIN
INSERT INTO employees (employee_id, employee_name) VALUES (p_employee_id, p_employee_name);
INSERT INTO employee_audit (action, employee_id, employee_name, audit_timestamp)
VALUES ('INSERT', p_employee_id, p_employee_name, CURRENT_TIMESTAMP);
COMMIT;
END;
/然后,创建一个触发器来自动记录每次对employees表进行插入操作的细节:
CREATE OR REPLACE TRIGGER audit_employee_insert AFTER INSERT ON employees FOR EACH ROW
BEGIN
INSERT INTO employee_audit (action, employee_id, employee_name, audit_timestamp)
VALUES ('INSERT', :NEW.employee_id, :NEW.employee_name, CURRENT_TIMESTAMP);
END;
/这样,每当有新的员工信息被插入到employees表时,相关的信息都会被记录到employee_audit表中。
请根据实际需求调整表名、字段名和数据类型。
评论已关闭