【发布时间】:2016-11-25 15:08:34
【问题描述】:
我目前有一张桌子,Messages。 ID 列是主键,使用标识填充。
x-----------------------------x
| ID | Contents |
x-------------|---------------x
| 1 | 01234 |
| 2 | 56789 |
x-----------------------------x
我想删除ID 列上的标识,并通过从序列Messages_ID_Sequence 中填充ID 的默认值来替换它。
这在 SSDT 中很容易实现。但是,当我部署数据库项目时,Messages_ID_Sequence 中的第一个值是 1。当我查看为Messages_ID_Sequence 生成的 SQL 时,很明显为什么:
CREATE SEQUENCE [dbo].[CommandMsgs_MSGID_Sequence]
AS BIGINT
START WITH 1
INCREMENT BY 1
NO MAXVALUE
NO CYCLE
CACHE 10
当我尝试插入新的消息记录时会出现问题。序列中的第一个值 1 填充新记录的 ID 列并导致违反主键约束。
那么我如何确保在创建Messages_ID_Sequence 时,它会从身份提供的下一个ID 开始? Messages_ID_Sequence 的创建脚本上的 Build Action 必须设置为 Build,这样解决方案就不能涉及 SSDT 不理解的任何内容。
【问题讨论】:
标签: sql-server sql-server-2012 sql-server-data-tools