MySQL 使用相同的临时表触发器替换表值而不定义列

标签 mysql

在 MySQL 8 数据库中,我有两个不同模式的相同表,其中一个用作其等效生产表的临时表。这些表包含 200 多个列,将来还会添加更多列,这使得显式定义列名称的值变得困难。

我需要使用 AFTER INSERT 触发器将生产表中的值与临时表中的值进行 INSERT 或 UPDATE,其中生产表中行的所有值都将在存在重复主键时被替换。请注意,生产表已定义其主键。

此后,我应该从临时表中删除所有行。

这是我尝试过的代码:

CREATE TRIGGER stage.my_table_after_insert AFTER INSERT ON my_table
FOR EACH ROW
BEGIN
    REPLACE INTO prod.my_table
        SELECT * FROM new;
    DELETE FROM stage.my_table
END

最佳答案

我不明白你为什么这样做,但你为什么不做类似的事情:

REPLACE INTO prod.my_table
SELECT * FROM stage.my_table; 
DELETE FROM stage.my_table;

关于MySQL 使用相同的临时表触发器替换表值而不定义列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55709243/

相关文章:

mysql - 在日期期间每周插入行

Mysql - 找出最大值的来源

mysql - 如何在mysql中从一种日期格式转换为另一种格式

Mysql 在 2 个主键上插入新行

php - 自动增加发票号码,每月重置为零

java - : No suitable driver found for jdbc:mysql://localhost:3306/sampledb如何解决

php - 未知的 MySQL 服务器主机

MySQL 用第一个表中的数据填充第二个表

mysql - 需要帮助内连接多个表并使用 MySQL 中的最后一个值行

php - 将值插入 mysql 数据库