2013-01-19 12 views

Odpowiedz

20

Okazało się to być dość łatwe:

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

lub jeśli tabela jest już utworzony:

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

(dziękuję Matt Strom do korekcji!)

+1

Podobnie jak mała uwaga, że ​​może być bardzo oczywiste dla niektórych ... ponieważ używa 'default', ma on zastosowanie tylko wtedy, gdy nie przewiduje wartości lub' null'. Użytkownicy nadal mogą przesłonić wartość sekwencji automatycznej, podając wartość w zapytaniu. –

+0

Czy istnieje sposób na wymuszenie użycia domyślnego? –

+0

@MattiasNordqvist za pomocą [tożsamość] (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql-identity-property) –

8

Instrukcja ALTER nie jest kompletna. Potrzebna jest następna klauzula FOR, aby przypisać wartość domyślną do żądanego pola.

ALTER TABLE mytable 
ADD CONSTRAINT DF_mytblid 
DEFAULT (NEXT VALUE FOR mainseq) FOR [id] 
1
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) 
) 
+0

A jak Twoja odpowiedź pokazuje użycie sekwencji jako domyślnych wartości kolumny? – dreamca4er

+0

To nie jest sekwencja, która jest wbudowana w Tożsamość. –

Powiązane problemy