【发布时间】:2024-01-14 11:14:01
【问题描述】:
在这个问题中,我想弄清楚,在 sql 中控制数据版本的最佳做法是什么。我们使用的是关系数据库(Sybase SAP Sql Anywhere)。问题是,我们不知道应该在软件的哪一层实现版本控制系统。我们想编写一个通用系统,以便对所有类型的数据都进行版本控制,而对每种类型(类型:联系人、约会等)进行少量工作。
以下是我们想出的选项: 1. 使用实体框架,计算两个模型的差异。然后将差异保存到数据库 2. 使用触发器,比较新旧数据,并将它们保存在单独的表中 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)
);
不,每次有人更改联系人对象时,我都想保存它的新版本。但我正在寻找一个通用的解决方案。这必须为每种类型实现。
谢谢!
【问题讨论】:
-
相关列表中的前五个问题中有四个 ===>>> 似乎正在讨论这个问题。它们都没有包含有用的信息吗?您提出的问题非常广泛,似乎更像是一个讨论问题而不是一个具体问题。
-
不,这个问题是关于结构和sql-code的。我想对我的数据本身进行版本控制。
-
数据?我相信这样做被称为做备份。 :-)
-
不,我们要记录,哪个人对数据进行了更改。例如更改一个电话号码必须是tracket。所以版本控制看起来像一种日志,或数据历史。如果某些员工犯了错误,客户希望转移到旧数据或恢复版本。这不像是备份。
-
这是一个审计表。在 数据库审计表 上进行 Google 搜索应该会找到一些信息。您也应该将上次评论中的详细信息放入问题中;这与您在问题中提出的含义完全不同。
标签: c# sql version-control sqlanywhere revision-history