Mam istniejącą tabelę o nazwie Persion
. W tej tabeli mam 5 kolumn:
- persionId
- Pseudonim
- PMid
- Opis
- Pamt
Kiedy utworzyłem tę tabelę, ustawiłem PersionId
i Pname
jako klucz podstawowy .
Chcę teraz dołączyć jeszcze jedną kolumnę do klucza podstawowego - PMID. Jak mogę napisać ALTER
oświadczenie, aby to zrobić? (Mam już 1000 rekordów w tabeli)
personId
w swoim stole. To z kolei oznacza, że jeśli dołączysz z tabeli typu transakcji (wielu) do tej tabeli na tym samym kluczu, otrzymasz duplikaty rekordów, co prowadzi do „podwójnego liczenia” rekordów transakcji.Odpowiedzi:
usuń ograniczenie i utwórz je ponownie
edytować:
nazwę ograniczenia można znaleźć, korzystając z zapytania poniżej:
źródło
Myślę, że coś takiego powinno działać
źródło
jest lepszym rozwiązaniem, ponieważ masz kontrolę nad nazwą klucza podstawowego.
To lepsze niż tylko używanie
który tworzy losowe nazwy i może powodować problemy podczas tworzenia skryptów lub porównywania baz danych
źródło
Jeśli dodasz ograniczenie klucza podstawowego
na przykład:
źródło
W twojej tabeli znajduje się już klucz podstawowy. Nie możesz po prostu dodać klucza podstawowego, w przeciwnym razie spowoduje błąd. Ponieważ istnieje jeden klucz podstawowy dla tabeli sql.
Najpierw musisz upuścić swój stary klucz podstawowy.
MySQL:
SQL Server / Oracle / MS Access:
Po drugie, dodaj klucz podstawowy.
MySQL / SQL Server / Oracle / MS Access:
lub lepszy poniżej
To może ustawić nazwę ograniczenia przez programistę. Łatwiej jest utrzymać stół.
Trochę się pogubiłem, kiedy spojrzałem na wszystkie odpowiedzi. Przeszukuję jakiś dokument, aby znaleźć każdy szczegół. Mam nadzieję, że ta odpowiedź może pomóc innym początkującym w SQL.
Odniesienie: https://www.w3schools.com/sql/sql_primarykey.asp
źródło
Ograniczenie KLUCZ PODSTAWOWY jednoznacznie identyfikuje każdy rekord w tabeli bazy danych. Klucze podstawowe muszą zawierać UNIKALNE wartości, a kolumna nie może zawierać wartości NULL.
źródło
Nekromancja.
Na wypadek, gdyby ktoś miał tak dobry schemat do pracy jak ja ...
Oto jak to zrobić poprawnie:
W tym przykładzie nazwa tabeli to dbo.T_SYS_Language_Forms, a nazwa kolumny to LANG_UID
źródło
Spróbuj tego-
źródło
Spróbuj użyć tego kodu:
źródło
źródło