2009-08-31 17 views
25
create table ImagenesUsuario 
{ 
    idImagen int primary key not null IDENTITY 
} 

To nie działa. Jak mogę to zrobić?Utwórz tożsamość SQL jako klucz podstawowy?

+7

W przyszłości, gdy powiesz "To nie działa", rozważ wyjaśnienie, co masz na myśli. Czy w jakiś sposób po cichu zawodzi? Czy pojawia się błąd, a jeśli tak, to jaki jest błąd? Czy Twój komputer spontanicznie się płonie? Czy zawiedzie podczas tworzenia tabeli lub wstawiania wierszy do tabeli? –

Odpowiedz

55

Prosta zmiana składni jest wszystko, co jest potrzebne:

create table ImagenesUsuario (
    idImagen int not null identity(1,1) primary key 
) 

jawnie przy użyciu „wiązania” słowo kluczowe, można dać klucz podstawowy konkretnej nazwy zamiast w zależności od programu SQL Server do auto przypisać nazwa:

create table ImagenesUsuario (
    idImagen int not null identity(1,1) constraint pk_ImagenesUsario primary key 
) 

Dodaj „klastrowych” słowo kluczowe, czy to największy sens opiera się na wykorzystaniu tabeli (czyli bilans wyszukiwań dla danego idImagen i ilość piśmie przewyższają korzyści klasteringu tabela według jakiegoś innego indeksu).

8

Jest to podobne do skryptów generowanych przez nasz zespół. Najpierw stwórz tabelę, a następnie zastosuj pk/fk i inne ograniczenia.

CREATE TABLE [dbo].[ImagenesUsuario] (
    [idImagen] [int] IDENTITY (1, 1) NOT NULL 
) 

ALTER TABLE [dbo].[ImagenesUsuario] ADD 
    CONSTRAINT [PK_ImagenesUsuario] PRIMARY KEY CLUSTERED 
    (
     [idImagen] 
    ) ON [PRIMARY] 
+2

Czy istnieje powód, dla którego należy unikać tworzenia klucza podstawowego w instrukcji tworzenia tabeli? –

+3

Zakładam, że pierwotnie naśladowaliśmy skrypty generowane przez narzędzia takie jak Enterprise Manager. To przekazuje, że tworzysz ograniczenie klucza podstawowego (w przeciwieństwie do właściwości kolumny). Pozwala również na określenie ograniczenia. W końcu obie metody działają, więc myślę, że to kwestia preferencji, z której łatwiej jest czytać/utrzymywać. – Mayo

1

Jeśli używasz T-SQL, jedyną rzeczą złego kodu jest to, że stosowane szelki {} zamiast nawiasów ().

PS: Zarówno IDENTITY, jak i PRIMARY KEY implikują NOT NULL, więc możesz to pominąć, jeśli chcesz.

Powiązane problemy