我试图用某种生成的默认业务键创建一个表。该值可以被覆盖,但不能为空。对于列,我想生成一个像"<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
语句时,它可以工作。