web-dev-qa-db-fra.com

Séquence comme valeur par défaut pour une colonne

J'ai déjà créé une séquence:

create sequence mainseq as bigint start with 1 increment by 1

Comment utiliser cette séquence comme valeur par défaut d'une colonne?

create table mytable(
    id      bigint not null default mainseq     -- how?
    code    varchar(20) not null
)
22
Endy Tjahjono

Cela s'est avéré assez facile:

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

ou si la table est déjà créée:

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

(merci Matt Strom pour la correction!)

33
Endy Tjahjono

L'instruction ALTER n'est pas tout à fait complète. Il a besoin d'une autre clause FOR pour affecter la valeur par défaut au champ souhaité.

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