1
我想从一个序列中设置一个默认值,比如here,但是也在序列前加上一个值,所以表中保存的值看起来像P123
。那可能吗?是否可以将字符串连接到序列值并将其用作列默认值?
我想从一个序列中设置一个默认值,比如here,但是也在序列前加上一个值,所以表中保存的值看起来像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
)
测试:
INSERT INTO MyTable (Code) VALUES ('asdf'), ('cvnb')
SELECT *
FROM MyTable
结果:
id code
p1 asdf
p2 cvnb
所以我甚至不需要计算列?尼斯。 – adam0101
将字母总是为P?无论如何,我不认为你可以保持序列为int。我会根据您的序列列虚拟化另一列。 – scsimon
@scsimon,在这种情况下,是的,它永远是“P”。通过虚拟化,你的意思是像一个计算列吗?我需要两列来做到这一点(一个用于序列,另一个用于计算值)?或者看起来如何? – adam0101
两者都正确。序列列需要保持一个int,计算列将是这个列和P的连接。像http://stackoverflow.com/a/24729386/6167855 – scsimon