Sql server 是否可以将字符串连接到序列值并用作列默认值?
我想为序列中的一列设置一个默认值,就像“完成”一样,但也要在序列前面加上一个值,以便保存在表中的值看起来像Sql server 是否可以将字符串连接到序列值并用作列默认值?,sql-server,sql-server-2014,tsql-sequence,Sql Server,Sql Server 2014,Tsql Sequence,我想为序列中的一列设置一个默认值,就像“完成”一样,但也要在序列前面加上一个值,以便保存在表中的值看起来像P123。有可能吗?完全有可能。 更改链接到以下内容的帖子中的示例: create sequence mainseq as bigint start with 1 increment by 1; create table mytable ( id varchar(20) not null constraint DF_mytblid default 'p' + CAST(n
P123
。有可能吗?完全有可能。更改链接到以下内容的帖子中的示例:
create sequence mainseq as bigint start with 1 increment by 1;
create table mytable (
id varchar(20) not null constraint DF_mytblid default 'p' + CAST(next value for mainseq as varchar(10)),
code varchar(20) not null
)
测试:
结果:
id code
p1 asdf
p2 cvnb
字母总是P吗?无论如何,我不认为您可以将序列保留为int。我会根据您的序列列虚拟化另一列。@scsimon,在这种情况下,是的,它总是“P”。你说的虚拟化是指像计算列一样吗?我是否需要两列来完成此操作(一列用于序列,一列用于计算值)?或者看起来怎么样?两个都正确。序列列需要保持为int,计算列将是该列和P的串联。类似于@scsimon,我刚刚了解到我无法做到这一点,因为我们必须从另一个系统中返回现有值。所以它需要是一个默认值,如果存在一个现有值,我们可以显式设置它。@scsimon,无需担心。我在我的问题中重读了那篇文章,似乎因为列只是使用序列值作为默认值,所以仍然可以向该列添加显式值,然后计算列将拾取它。所以我甚至不需要计算列?美好的
id code
p1 asdf
p2 cvnb