在这个问题中,我想了解一下,在sql中控制数据版本的最佳实践是什么。我们正在使用关系数据库(Sybase SAP Sql Anywhere)。问题是,我们不知道我们应该在哪一层软件中实现版本控制系统。我们希望编写一个通用系统,以便版本控制可用于所有类型的数据,每种类型的工作量很少(类型:联系人,约会,......)。
以下是我们想出的选项: 1.使用实体框架并计算两个模型的差异。然后将差异保存到数据库 2.使用触发器和comapre旧数据和新数据,并将它们保存在单独的表中 3.使用证明更改的程序并将它们保存在单独的表中
我知道这是一个非常普遍的问题,但也许有人对我们的问题有一个好主意和解决方案。
修改
重要提示:我想创建数据本身的版本,而不是sql架构或某些sql代码。
EDIT2
让我们使用以下简单示例。我有一个很小的联系表(不是我们真正的联系表):
CREATE TABLE Contact
(
"GUID" Uniqueidentifier NOT NULL UNIQUE,
"ContactId" BIGINT NOT NULL Identity(1,1),
"Version" INTEGER NOT NULL,
"FirstName" VARCHAR(100),
"LastName" VARCHAR(200),
"Address" VARCHAR(400),
PRIMARY KEY (ContactId, Version)
);
不,每当某人对联系人对象进行更改时,我都想保存它的新版本。但我正在寻找一个通用的解决方案。这必须针对每种类型实施。
谢谢!
答案 0 :(得分:1)
作为一个生活和呼吸数据库源代码控制的人(DBmaestro令人惊叹的团队的一员),我可以推荐两种方法的组合,具体取决于你如何运行delta。
答案 1 :(得分:1)
我们遇到了同样的问题,并尝试通过存储我们想要遵循的每个实体的版本和分支ID来解决它。 在另一个表中,我们将版本与其前任版本ID存储在一起,因此我们可以跟踪分支在哪里相遇。 我们有一个带有版本号的审计跟踪。
我想知道这是否具有您需要的相同元素(ed),以及自您的问题和上一次编辑以来您是否已提升。
感谢您建议合并唯一ID和版本号