我想在MySQL中执行SCD过程,我有两个完全相同的表,table1总是被截断,它只有新记录。table2从table1获取记录并维护历史记录。在我的场景中,如果现有数据以table1格式出现,我希望在table2中覆盖,如果新记录以table1格式出现,我希望在table2中作为新记录插入。
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中的新行插入。请解释一下如何做这个场景?
发布于 2019-03-13 22:57:20
您可以通过五个步骤来完成此操作:
table1中的行放入变量id2、name2和table2中,或者在table2上使用ON DUPLICATE KEY UPDATE进行更新:在重复密钥update name =id2,title = title2
的transaction.
https://stackoverflow.com/questions/55144788
复制相似问题