mysql如何在修改表时如何得到修改前的数据
时间: 2024-01-22 11:20:22 浏览: 22
在 MySQL 中,可以使用触发器 (Trigger) 来实现在修改表时得到修改前的数据。
触发器是一个与表相关的对象,当指定的事件发生时(如 INSERT、UPDATE、DELETE),会自动执行触发器中定义的代码。在触发器中,可以使用 OLD 表示修改前的数据,NEW 表示修改后的数据。
以下是一个示例,假设我们有一个名为 `users` 的表,其中有 `id` 和 `name` 两列。我们希望在修改用户数据时,记录修改前的数据和修改后的数据:
首先创建一个触发器:
```sql
CREATE TRIGGER before_update_users
BEFORE UPDATE ON users
FOR EACH ROW
BEGIN
INSERT INTO user_log (id, name_before, name_after)
VALUES (OLD.id, OLD.name, NEW.name);
END;
```
这个触发器用于在 `users` 表中每一行数据更新前执行。它会将每一次更新前的 `id` 和 `name` 记录到一个名为 `user_log` 的表中。
当我们执行以下 SQL 语句修改 `users` 表中的数据时:
```sql
UPDATE users SET name = 'new_name' WHERE id = 1;
```
触发器 `before_update_users` 将会被自动触发,在 `user_log` 表中插入一条记录,包含修改前的 `id` 和 `name` 以及修改后的 `name`。
这样,我们就可以通过触发器在修改表时得到修改前的数据。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)