我正在尝试使用某种生成的默认业务键创建一个表。该值可以被覆盖,但不能为空。 对于列,我想生成一个像
"<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
没有成功(我想这太容易解决了)。关于如何解决这个问题的任何想法?