2017-03-06 27 views
1

我想从一个序列中设置一个默认值,比如here,但是也在序列前加上一个值,所以表中保存的值看起来像P123。那可能吗?是否可以将字符串连接到序列值并将其用作列默认值?

+0

将字母总是为P?无论如何,我不认为你可以保持序列为int。我会根据您的序列列虚拟化另一列。 – scsimon

+0

@scsimon,在这种情况下,是的,它永远是“P”。通过虚拟化,你的意思是像一个计算列吗?我需要两列来做到这一点(一个用于序列,另一个用于计算值)?或者看起来如何? – adam0101

+0

两者都正确。序列列需要保持一个int,计算列将是这个列和P的连接。像http://stackoverflow.com/a/24729386/6167855 – scsimon

回答

2

这完全有可能。
从改变后的例子,你已链接到这样的事情:

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 
) 

测试:

INSERT INTO MyTable (Code) VALUES ('asdf'), ('cvnb') 

SELECT * 
FROM MyTable 

结果:

id code 
p1 asdf 
p2 cvnb 
+0

所以我甚至不需要计算列?尼斯。 – adam0101

相关问题