0
我们有一个表格,它在我们的应用程序数据库中包含一些枚举值和应用程序参数值。这些记录使用标识列作为其主键。我们也有DEV,TEST和PROD数据库。每次发布更新时,我们都需要在TEST和PROD数据库之间同步主键。测试和产品之间的同步标识列
我想问的是,什么是同步标识列的首选方法?我们想到的一个选择是从主键列中移除标识属性并手动创建在DEV和PROD上都相同的ID。
你的想法是什么?
我们有一个表格,它在我们的应用程序数据库中包含一些枚举值和应用程序参数值。这些记录使用标识列作为其主键。我们也有DEV,TEST和PROD数据库。每次发布更新时,我们都需要在TEST和PROD数据库之间同步主键。测试和产品之间的同步标识列
我想问的是,什么是同步标识列的首选方法?我们想到的一个选择是从主键列中移除标识属性并手动创建在DEV和PROD上都相同的ID。
你的想法是什么?
您需要有一个理由将Identity
属性添加到PK
。显然Identity
自动生成PK的方式,并允许你忘记代码如MAX(id)+1
。所以,如果它对你的情况没有意义(据我所知你的值是预先定义的,代码库期望具体值),那么删除标识列应该是一个很好的解决方案。
此外,一个好的做法是在数据脚本中添加consitency检查,并让它们失败或通知是否有任何冲突。随着无标识的方式它看起来像:
IF EXISTS (SELECT 1 from enum_table where id = @idToInsert)
--notify there is a conflict
-- else insert @idToInsert
在我的项目之一,我们发现,测试和督促数据库套房最适合我们之间的每周刷新,因此考虑过调查这一变种。
优点:
缺点:
希望这有助于
听起来好像HTTPS的一个问题://softwareengineering.stackexchange .COM。 –
@UweKeim引用其他网站时,通常会指出[交叉发帖被忽视](https://meta.stackexchange.com/tags/cross-posting/info) – gnat