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



我试图用某种生成的默认业务键创建一个表。该值可以被覆盖,但不能为空。对于列,我想生成一个像"<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-Designer,我得到以下错误:

第1行数据未提交。错误来源:Framework Microsoft SqlClient Data Provider。错误信息:如果ROWCOUNT选项已设置,或者查询包含TOP或OFFSET,则NEXT VALUE FOR函数不能在默认约束中使用。

如何禁用行计数选项?SET ROWCOUNT 0没有做到这一点(我想这是一个太容易修复)。有办法解决这个问题吗?

解决方案是不使用"Edit top 200 row "在SSMS中,因为它使用select top 200...语句。当直接执行insert into语句时,它可以工作。

最新更新