帮我写一段代码 创建触发器DMEXAM.TRIGGER1,当执行CREATE动作后,记录的信息存放在表EVENT_LOG。记录下创建时间(EVENT_TIME)、操作用户(EVENT_USER)
时间: 2023-11-28 09:51:27 浏览: 62
在Oracle数据库中创建触发器,可以使用PL/SQL语言编写触发器。
以下是一个创建触发器的示例代码,用于在CREATE时记录信息到EVENT_LOG表中:
```
CREATE OR REPLACE TRIGGER DMEXAM.TRIGGER1
AFTER CREATE
ON DATABASE
DECLARE
v_event_time TIMESTAMP;
v_event_user VARCHAR2(30);
BEGIN
-- 获取当前时间和用户
v_event_time := systimestamp;
v_event_user := USER;
-- 插入记录到EVENT_LOG表中
INSERT INTO EVENT_LOG(EVENT_TIME, EVENT_USER)
VALUES(v_event_time, v_event_user);
END;
/
```
该触发器在创建时会记录当前时间和用户,然后将这些信息插入到EVENT_LOG表中。在创建表时,触发器会自动执行并记录信息到EVENT_LOG表中。
相关问题
postgresql 触发器记录执行的sql
PostgreSQL触发器是一种特殊类型的存储过程,它们会在特定的数据更改事件发生时自动执行。触发器可以用来记录对数据库表的SQL操作,包括INSERT、UPDATE、DELETE等操作。当你创建一个触发器时,通常会指定当满足某个条件时应该执行的操作,这通常包括插入一条新的记录到另一个表,用于审计或日志目的。
在创建触发器时,你可以使用`TG_EVENT`列来指定触发何时被激活,而`TG_COMMAND`列可以帮助判断是哪种SQL命令触发了触发器。例如,你可以设置一个BEFORE INSERT触发器,当数据插入新行时,记录相应的INSERT SQL到历史记录表中。
这是一个简单的示例:
```sql
CREATE OR REPLACE FUNCTION log_insert_trigger() RETURNS TRIGGER AS $$
BEGIN
INSERT INTO audit_log (action, old_row, new_row)
VALUES ('INSERT', NULL, NEW);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
CREATE TRIGGER trig_after_insert
AFTER INSERT ON your_table
FOR EACH ROW
EXECUTE FUNCTION log_insert_trigger();
```
在这个例子中,每当在`your_table`上执行INSERT操作,`log_insert_trigger`函数就会被执行,并将操作信息插入到`audit_log`表中。
MySQL 创建触发器语句
在MySQL中,创建触发器是一种预定义事件的机制,当特定的表操作(比如INSERT、UPDATE或DELETE)发生时,它们会自动执行事先定义好的SQL语句。触发器的基本语法如下:
```sql
CREATE TRIGGER trigger_name
AFTER|BEFORE event_type ON table_name
FOR EACH ROW
BEGIN
-- 触发器执行的SQL语句块
INSERT INTO log_table (event, old_data, new_data) VALUES ('ACTION', OLD.column, NEW.column);
END;
```
这里的关键部分包括:
- `trigger_name`: 你要为触发器起的名字。
- `AFTER|BEFORE`: 指定事件何时触发,`AFTER`在操作完成后执行,`BEFORE`则在操作开始前执行。
- `event_type`: 可能是`INSERT`, `UPDATE`, 或`DELETE`.
- `table_name`: 触发器关联的操作数据表名。
- `FOR EACH ROW`: 指示每次操作每行都会触发一次这个触发器。
- `BEGIN...END`: 包含要执行的SQL语句。
例如,创建一个在插入新记录时更新另一个计数字段的简单触发器:
```sql
CREATE TRIGGER increment_count
AFTER INSERT ON orders
FOR EACH ROW
BEGIN
UPDATE products SET stock = stock - 1 WHERE product_id = NEW.product_id;
END;
```
阅读全文