mysql - 当INSERT/UPDATE/DELETE修改表时如何自动运行查询?

标签 mysql sql stored-procedures triggers synchronization

我有一个查询,它基本上将一个数据库中的表中的所有数据“同步”到另一个数据库中的复制表。

这是简单的查询:

TRUNCATE TABLE [Database2].[dbo].[USER_SYNC]

INSERT INTO [Database2].[dbo].[USER_SYNC]
SELECT * FROM [Database1].[dbo].[USER]

现在,经过一些研究,我考虑使用触发器来执行此操作,但是,我了解到存储过程和诸如此类的繁重查询不应在触发器中使用。

因此,每当插入、修改或删除 database1 中的记录时,我可以从 SQL 中自动运行此查询的最佳方式是什么?

如果我读到的有关触发器的信息不正确,那么我将如何为我的过程创建一个触发器?谢谢。

最佳答案

如果您需要同步表,则无需每次更新、删除或插入时都截断表。

  1. 创建用户表的相同副本。
  2. 在原始用户表上的更新、删除、插入触发器时创建。
  3. 在触发器更新中,一次仅删除或插入到重复表中的一行 - 更新、删除或插入到原始用户表中的行。这不会是一个繁重的查询。

更新:

关于mysql - 当INSERT/UPDATE/DELETE修改表时如何自动运行查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24082770/

相关文章:

sql - ORDER BY 条件

sql - Snowflake - 检查字符串是否为字母数字?

stored-procedures - Informix 有计划触发器吗?

mysql - 如何转义mysql jdbc连接字符串中的特殊字符

mysql - NodeJS Express MySQL post 请求抛出 "Cannot set headers after they are sent to the client"

PHP PDO 准备语句语法问题

php - 指向支持 JBoss、Apache 和 Mysql 的云服务的指针

sql - 更新游标性能缓慢

sql-server - 行号获取

mysql - 从 Lua 调用存储过程返回不完整的结果