23

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

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
)
4

3 に答える 3

39

それは十分に簡単であることが判明しました:

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に感謝します!)

于 2013-01-19T10:35:54.370 に答える
13

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

ALTER TABLE mytable
ADD CONSTRAINT DF_mytblid
DEFAULT (NEXT VALUE FOR mainseq) FOR [id]
于 2013-07-30T18:57:42.440 に答える
-4
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)
)
于 2017-11-09T20:27:14.353 に答える