2

我们正在构建一个桌面应用程序,其数据库需要与 Web 应用程序数据库同步。

为此,我们采取了以下方法:

  1. 为了获取已修改的行,我们将这些行添加到一个空表(table_with_updates)中。
  2. 我们通过使用 insert=1、update=2、delete=3 等代码设置此表中的列值来维护更新。
  3. 为了获得更新,我们在添加/更新/删除数据的表上添加触发器。
  4. 添加触发器的缺点是它会减慢表上的插入和更新。为了减少这种影响,我们已经实现了 mysql 复制,我们有客户端 Web 应用程序使用主服务器添加/更新/删除数据和桌面应用程序,该应用程序从从服务器请求更新。
  5. 为了有一个只存储更新的表,我们向从表添加了触发器,从中获取插入/更新/删除的行。

请建议是否有更好的方法来做到这一点。

以下是问题:我们有一个包含动态列的表。因此,我们无法在触发器中指定新列。我们向该表添加了一个触发器,该触发器填充了另一个空表。

例如:Table1 列:id、col1、col2、col3、col4

表 2 列: id 、 col1 、 col2 、 col3 、 col4 、 task

以下是触发器:

DELIMITER //
Drop trigger if exists on_insert_slave;
CREATE TRIGGER `on_insert_slave` AFTER INSERT ON `table1` 
FOR EACH ROW BEGIN  
INSERT INTO table2 select table1.*,1 from table1 where id = NEW.id;
END//
DELIMITER ;

table2 中的最后一列用于记录 table1 中行的操作,即插入为 1,更新为 2,删除为 3

当此触发器执行时,仅填充 table2 的 id 和 col1。

提前致谢。

4

0 回答 0