Chcę utworzyć tabele w programie SQL Server 2008, ale nie wiem, jak utworzyć złożony klucz podstawowy. Jak mogę to osiągnąć?Jak utworzyć złożony klucz podstawowy w SQL Server 2008
Odpowiedz
create table my_table (
column_a integer not null,
column_b integer not null,
column_c varchar(50),
primary key (column_a, column_b)
);
Jaka jest różnica między używaniem ** Podstawowy Klucz ** i ** CONSTRAINT ** jak w przykładzie @ matthew-abbott? – mateuscb
Tworzy to nazwane ograniczenie, które można usunąć/zaktualizować o nazwę – longhairedsi
Nie do końca. Oba tworzą "nazwane więzy". Po prostu z tym pierwszym nie kontrolujesz nazewnictwa. Ale raz utworzone, możesz wyszukać nazwę, która była używana i usunąć/zaktualizować nazwę ... – Auspex
CREATE TABLE UserGroup
(
[User_Id] INT NOT NULL,
[Group_Id] INT NOT NULL
CONSTRAINT PK_UserGroup PRIMARY KEY NONCLUSTERED ([User_Id], [Group_Id])
)
+1 - Tak, nazwij swoje ograniczenia ludziom, inaczej Serwer Sql robi nieprzyjemne rzeczy, nazywaj je PK_UserGrou_5DEAEAF5 w DB jednego wydania i PK_UserGrou_3214EC0777F66C69 na inne. To jest problem, jeśli musisz zaktualizować lub upuścić PK, ponieważ najpierw musisz pobrać nazwę z bazy danych, a następnie użyć dynamicznego sql (lub najpierw zbudować polecenie w kodzie). Poza tym jest brzydka. – monty
Czy jest jakikolwiek powód, dla którego nie chciałbym, aby mój PK był skupiony? – 4AM
@ 4AM Może to odpowiedzieć na twoje pytanie: [link] (https://dba.stackexchange.com/questions/7741/when-should-a-primary-key-be-declared-non-clustered) – Dongminator
Via Enterprise Manager (SSMS) ...
- prawym przyciskiem myszy na tabeli chcesz utworzyć klucz kompozytowe i wybierz projekt.
- Highlight kolumny chcesz utworzyć jako złożonego klucza
- Prawy klik na te kolumny i Set Primary Key
Aby zobaczyć SQL można następnie prawym przyciskiem myszy na Table
>Script Table As
>Create To
Dziękuję. Jest to najbezpieczniejszy/najłatwiejszy sposób bez potencjalnego zepsucia mojej składni SQL – AlbatrossCafe
Ułatwia to tych, którzy chcą szybkiej naprawy poprzez interfejs design/guid. Dzięki za pomoc. –
Najpierw utwórz bazę danych i tabelę, ręcznie dodając kolumny. W której kolumnie ma być klucz podstawowy. Powinieneś kliknąć prawym przyciskiem myszy tę kolumnę i ustawić klucz podstawowy i ustawić wartość początkową klucza podstawowego.
Aby utworzyć kompozytowy unikalny klucz na stole
ALTER TABLE [TableName] ADD UNIQUE ([Column1], [Column2], [column3]);
Klucz UNIQUE NIE jest taki sam, jak klucz PRIMARY !!! –
wiem, jestem spóźniona do tej partii, ale dla istniejącej tabeli, spróbuj:
ALTER table TABLE_NAME
ADD CONSTRAINT [name of your PK, e.g. PK_TableName] PRIMARY KEY CLUSTERED (column1, column2, etc.)
CREATE TABLE UserGroup
(
[User_Id] INT Foreign Key,
[Group_Id] INT foreign key,
PRIMARY KEY ([User_Id], [Group_Id])
)
dodaj opis zbyt –
6 lat późno i składnia nie jest poprawna! –
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)
)
UPDATE
Powinienem dodać!
Jeśli chcesz zmienić te klucze obce/podstawowe, najpierw powinieneś utworzyć z ograniczeniem lub nie możesz wprowadzać zmian. Tak 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ł spojrzeć na każdą zmianę (alter table), której potrzebujesz.
Zalecam, aby ustawić dla siebie standard, a ograniczenie powinno być zdefiniowane zgodnie ze swoim standardem. Nie będziesz musiał zapamiętywać i nie będziesz musiał myśleć zbyt długo. Krótko mówiąc, pracujesz szybciej.
to nie tworzy PK ale tylko FK, nie? – batmaci
@batmaci; Nie, to zarówno FK, jak i podwójna grupa FK do PK. To użycie jest zdrowsze. Radzę. Jeśli nie tworzysz PK, możesz również użyć. –
- 1. Jak zdefiniować złożony klucz podstawowy w SQL?
- 2. Jak utworzyć złożony klucz podstawowy (adnotacja java)
- 3. SQL Server 2008: Dowiedz się klucz podstawowy/zagraniczny w tabeli?
- 4. Podstawowy klucz złożony PostgreSQL
- 5. Jak utworzyć klucz złożony za pomocą SQL Server Management Studio?
- 6. Podstawowy klucz złożony w django
- 7. Oracle złożony klucz podstawowy/klucz obcego pytania
- 8. Jak dodać złożony klucz podstawowy do tabeli
- 9. Klucz złożony w JPA
- 10. Ebean - Podstawowy klucz złożony zawierający klucze obce
- 11. SQL Server: Zdobądź klucz podstawowy tabeli za pomocą kwerendy SQL
- 12. Złożony klucz podstawowy, klucz obcy. Odniesienie do obiektu lub klucza?
- 13. Jak zdefiniować klucz złożony w Persistent
- 14. Podstawowy klucz złożony w tabeli Zmienna w przechowywanej procedurze
- 15. Jak utworzyć złożony klucz obcy w studiu zarządzania serwerem sql 2012
- 16. Określić Stary klucz podstawowy w wyzwalaczu SQL
- 17. SQL Server: drop table klucz podstawowy, nie znając jego nazwę
- 18. Czy mogę utworzyć indeks "Covering, Spatial" w SQL Server 2008?
- 19. Resetowanie autoinrementacji w Microsoft SQL Server 2008 R2
- 20. Jak odbudować widok w SQL Server 2008
- 21. Związek klucz podstawowy w tabeli typu zmienna
- 22. Określ klucz podstawowy tabeli za pomocą TSQL
- 23. przypadek zerowy SQL Server 2008
- 24. Tworzenie kolumny obliczeniowej w SQL Server 2008
- 25. nie można zmienić projekt tabeli w SQL Server 2008
- 26. MERGE Naruszenie klucz podstawowy
- 27. TWORZENIE INDEKSU SQL Server 2008
- 28. Jak uzyskać następny klucz podstawowy dla SQL 2008 w Entity Framework 4
- 29. Utwórz tożsamość SQL jako klucz podstawowy?
- 30. JPA kompozytowa klucz podstawowy
Gdy jesteś nowicjuszem w asp.net, porada: Klucze podstawowe złożone są * złe rzeczy *, które zwykle oznaczają źle przemyślany projekt – smirkingman
@smirkingman Bardzo ważne problemy mogą być rozwiązane, często prawie wyłącznie z złożone klucze podstawowe. Tak jak wtedy, gdy masz setki/tysiące użytkowników, którzy zapisują wiersze do jednego typu tabeli/jednostki. Chcesz wiersze uporządkowane według identyfikatora użytkownika, a następnie drugą wartość. Twoja ocena wartości jest po prostu niepoprawna, jeśli nie, wkrótce wycofalibyśmy tę funkcję. –
Możliwy duplikat [Tworzenie złożonego klucza podstawowego w SQL Server] (http://stackoverflow.com/questions/12594791/creating-composite-primary-key-in-sql-server) –