首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mysql中实现scd

如何在mysql中实现scd
EN

Stack Overflow用户
提问于 2019-03-13 22:50:44
回答 1查看 503关注 0票数 0

我想在MySQL中执行SCD过程,我有两个完全相同的表,table1总是被截断,它只有新记录。table2从table1获取记录并维护历史记录。在我的场景中,如果现有数据以table1格式出现,我希望在table2中覆盖,如果新记录以table1格式出现,我希望在table2中作为新记录插入。

代码语言:javascript
复制
create table table1(id int, name varchar(2),title varchar(10));
create table table2(id int, name varchar(2),title varchar(10));

这是我上面的样例表格结构。如果表包含(1,a,hockey)这样的值,那么我只想将这些数据插入到table2中,然后table1将被截断。如果我再次使用相同的Id将记录插入到table2中,但标题在这种情况下可能会改变,我希望覆盖table2中的数据,如果有任何新的Id,则将其作为table2中的新行插入。请解释一下如何做这个场景?

EN

回答 1

Stack Overflow用户

发布于 2019-03-13 22:57:20

您可以通过五个步骤来完成此操作:

  1. 启动一个数据库,将table1中的行放入变量id2name2table2中,或者在table2上使用ON DUPLICATE KEY UPDATE进行更新:

在重复密钥update name =id2,title = title2

  • Delete from name2上插入到table2 (id,name,title)值(id2,name2,title2)中。不要截断。截断可能会使transaction.

的transaction.

  • Commit无效
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55144788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档