【Oracle】存储过程和触发器
问题描述不够具体,但我可以提供一个简单的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
表中。
请根据实际需求调整表名、字段名和数据类型。
评论已关闭