Chcę utworzyć tabele w SQL Server 2008, ale nie wiem, jak utworzyć złożony klucz podstawowy. Jak mogę to osiągnąć?
Chcę utworzyć tabele w SQL Server 2008, ale nie wiem, jak utworzyć złożony klucz podstawowy. Jak mogę to osiągnąć?
Odpowiedzi:
create table my_table (
column_a integer not null,
column_b integer not null,
column_c varchar(50),
primary key (column_a, column_b)
);
CREATE TABLE UserGroup
(
[User_Id] INT NOT NULL,
[Group_Id] INT NOT NULL
CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
Za pośrednictwem Enterprise Manager (SSMS) ...
Aby zobaczyć SQL można następnie kliknij prawym przyciskiem na Table
> Script Table As
>Create To
Dla MSSQL Server 2012
CREATE TABLE usrgroup(
usr_id int FOREIGN KEY REFERENCES users(id),
grp_id int FOREIGN KEY REFERENCES groups(id),
PRIMARY KEY (usr_id, grp_id)
)
AKTUALIZACJA
Powinienem dodać!
Jeśli chcesz zmienić klucze obce / podstawowe, najpierw powinieneś utworzyć klucze z ograniczeniami lub nie możesz wprowadzać zmian. Jak to poniżej:
CREATE TABLE usrgroup(
usr_id int,
grp_id int,
CONSTRAINT FK_usrgroup_usrid FOREIGN KEY (usr_id) REFERENCES users(id),
CONSTRAINT FK_usrgroup_groupid FOREIGN KEY (grp_id) REFERENCES groups(id),
CONSTRAINT PK_usrgroup PRIMARY KEY (usr_id,grp_id)
)
Właściwie ostatni sposób jest zdrowszy i seryjny. Możesz sprawdzić nazwy ograniczeń FK / PK (dbo.dbname> Keys> ..), ale jeśli nie używasz ograniczenia, MSSQL automatycznie tworzy losowe nazwy FK / PK. Będziesz musiał przyjrzeć się każdej zmianie (zmianie tabeli), której potrzebujesz.
Zalecam, abyś wyznaczył sobie standard; ograniczenie powinno być zdefiniowane zgodnie z Twoim standardem. Nie będziesz musiał zapamiętywać ani zbyt długo myśleć. Krótko mówiąc, pracujesz szybciej.
Najpierw utwórz bazę danych i tabelę, ręcznie dodając kolumny. W której kolumnie ma być klucz podstawowy. Należy kliknąć tę kolumnę prawym przyciskiem myszy i ustawić klucz podstawowy oraz ustawić wartość początkową klucza podstawowego.
Aby utworzyć złożony unikalny klucz na stole
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);
CREATE TABLE UserGroup
(
[User_Id] INT Foreign Key,
[Group_Id] INT foreign key,
PRIMARY KEY ([User_Id], [Group_Id])
)