设想:
我有一组测试数据需要每天部署到我们的构建服务器(我们的构建服务器数据库首先被当前的实时数据库覆盖,并删除了一个多月前的所有数据)。
该测试数据中包含需要保留的外键引用。
我不能简单地打开 IDENTITY_INSERT,因为主键可能与数据库中已经存在的数据发生冲突(因为我们不是从空白数据库开始的)。
测试数据需要能够相当定期地重新生成,因此尽管通过部署脚本并将 id 列捏造为古怪的东西(或例如负数),然后将相关的外键列更改为每次我们重新生成数据时都使用相同的 ID,这并不让我兴奋。
理想情况下,我想知道是否有一种工具可以扫描数据库,获取外键约束并相应地生成插入脚本,例如:
INSERT INTO MyTable VALUES('TEST','TEST');
DECLARE @Id INT;
SET @Id = (SELECT @@IDENTITY)
INSERT INTO MyRelatedTable VALUES(@Id,'TEST')