非主键列上序列的连接默认值

问题描述 投票:0回答:0

我正在尝试使用某种生成的默认业务键创建一个表。该值可以被覆盖,但不能为空。 对于列,我想生成一个像

"<tablename>_<sequence_id>"
这样的字符串:例如
user_1
user_2
,... 该序列在所有表中共享,看起来像:

create sequence sq_business_key start with 1 increment by 1

datatable-sql 是这样的:

CREATE TABLE [User] (
    guid CHAR(32) NOT NULL DEFAULT (REPLACE(CONVERT([char](36),newid()), '-', '')),
    name VARCHAR(255) NOT NULL,
    description VARCHAR(max) NULL,
    [businessKey] VARCHAR(50) NULL DEFAULT ('user_' + convert(varchar(10), NEXT VALUE FOR sq_business_key)),
    PRIMARY KEY (guid)
);

(不要对主键的事情感到疑惑:sqlalchemy、alembic 和 sql server 一起工作对我来说没有预期的那么好)

当我尝试在 SSMS 中插入一行时,出现以下错误:

第一行数据未提交。 错误来源:框架 Microsoft SqlClient 数据提供程序。 错误消息:如果设置了 ROWCOUNT 选项,或者查询包含 TOP 或 OFFSET,则不能在默认约束中使用 NEXT VALUE FOR 函数。

如何禁用行计数选项?

SET ROWCOUNT 0
没有成功(我想这太容易解决了)。关于如何解决这个问题的任何想法?

sql-server default-value default-constraint tsql-sequence
© www.soinside.com 2019 - 2024. All rights reserved.