0

设想:

我有一组测试数据需要每天部署到我们的构建服务器(我们的构建服务器数据库首先被当前的实时数据库覆盖,并删除了一个多月前的所有数据)。

该测试数据中包含需要保留的外键引用。

我不能简单地打开 IDENTITY_INSERT,因为主键可能与数据库中已经存在的数据发生冲突(因为我们不是从空白数据库开始的)。

测试数据需要能够相当定期地重新生成,因此尽管通过部署脚本并将 id 列捏造为古怪的东西(或例如负数),然后将相关的外键列更改为每次我们重新生成数据时都使用相同的 ID,这并不让我兴奋。

理想情况下,我想知道是否有一种工具可以扫描数据库,获取外键约束并相应地生成插入脚本,例如:

INSERT INTO MyTable VALUES('TEST','TEST');

DECLARE @Id INT;
SET @Id = (SELECT @@IDENTITY)

INSERT INTO MyRelatedTable VALUES(@Id,'TEST')
4

1 回答 1

0

听起来您想研究一个处理 id 变化的 ETL 过程。当您使用 SQL Server 时,您可以查看该OUTPUT子句- 使用它来构建一些临时表,这些临时表可以将每个主键的“旧”id 映射到“新”id,以便在迁移“子”表。

于 2013-04-11T13:04:29.077 回答