web-dev-qa-db-ja.com

列のデフォルト値としてのシーケンス

私はすでにシーケンスを作成しました:

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
)
22
Endy Tjahjono

それは十分に簡単であることがわかりました:

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

(訂正してくれたMatt Stromに感謝!)

33
Endy Tjahjono

ALTERステートメントは完全ではありません。目的のフィールドにデフォルトを割り当てるには、別のFOR句が必要です。

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