序列作为列的默认值

问题描述 投票:0回答:4

我已经创建了一个序列:

create sequence mainseq as bigint start with 1 increment by 1

如何使用此序列作为列的默认值?

create table mytable(
    id      bigint not null default mainseq     -- how?
    code    varchar(20) not null
)
sql-server t-sql sql-server-2012 sequence
4个回答
50
投票

事实证明这很简单:

create table mytable (
    id      bigint not null constraint DF_mytblid default next value for mainseq,
    code    varchar(20) not null
)

或者如果表已创建:

alter table mytable
add constraint DF_mytblid
default next value for mainseq
for id

(感谢马特·斯特罗姆的更正!)


15
投票

ALTER 语句不太完整。它需要另一个 FOR 子句来将默认值分配给所需的字段。

ALTER TABLE mytable
ADD CONSTRAINT DF_mytblid
DEFAULT (NEXT VALUE FOR mainseq) FOR [id]

0
投票

您可以在 SQL Server Management Studio 的设计屏幕中进行操作,如下所示:

enter image description here


-5
投票
create table users(
    u_id int identity(1,1) primary key,
    u_type varchar(30) default 'member', 
    entrydate datetime default (getdate()), 
    updatedate  datetime default (getdate()),
    isactive bit default 1,
    firstname varchar(30),
    lastname varchar(30),
    email varchar(50),
    password varchar(50)
)
© www.soinside.com 2019 - 2024. All rights reserved.