披露:我自己是一个“自然钥匙”的拥护者,反对 IDENTITY PK 方法。但我确实对生活方式的选择有一种“活下去,让生活”的方法,所以请不要在这里争论宗教:)
我继承了一个表,其中唯一的键是 IDENTITY PK 列;我们称之为 ID。有许多引用 ID 的表。创建新实体的预期过程似乎是:
- 插入表格。
- 使用 scope_identity 获取自动生成的 ID。
- 使用自动生成的 ID 插入相关表。
实际上,有一个辅助存储过程来创建实体并返回 ID。但是,我有几个问题:
我需要比辅助存储过程更进一步,并在相关表中创建行,这些表本身具有 IDENTITY PK,因此对于每个实体,我需要沿途获取几个自动生成的值。我需要制造数百个实体,并且帮助程序被编码为一次处理一个实体。
使用“IDENTITY PK”设计批量制造实体的最佳方法是什么?
当使用我自己的“自然键”设计时,我可以提前生成键值,因此这只是加载一些临时表并按照外键预期的顺序插入到表中的情况。因此,我很想找到一个我知道现在没有使用的高值 INTEGER 值序列(以匹配 IDENTIY 列的类型),并希望到时候它们不会被使用插入。这是一个好主意吗?