Mam tabelę, w której brakuje kolumny w ograniczeniu klucza podstawowego. Zamiast edytować go za pośrednictwem SQL Server, chcę umieścić to w skrypcie, aby dodać go jako część naszych skryptów aktualizacji.
Jakiej składni mogę użyć, aby to zrobić? Czy muszę usunąć i odtworzyć kluczowe ograniczenie?
sql-server
Jason
źródło
źródło
Odpowiedzi:
Tak. Jedynym sposobem byłoby usunięcie ograniczenia za pomocą tabeli Alter, a następnie ponowne utworzenie go.
źródło
alter table PatientsInfo drop constraint PK__Patients__1CBB51380A338187
tutaj działadb
.table
DROP PRIMARY KEY, ADD PRIMARY KEY (id1
,id2
);PRIMARY KEY CONSTRAINT
nie można go zmienić, możesz go tylko upuścić i utworzyć ponownie. W przypadku dużych zbiorów danych może to spowodować długi czas działania, a tym samym - niedostępność tabeli.źródło
Jeśli chodzi o wydajność, nie ma sensu przechowywać w tym czasie indeksów nieklastrowych, ponieważ zostaną one ponownie zaktualizowane po upuszczeniu i utworzeniu. Jeśli jest to zbiór dużych zbiorów danych, należy rozważyć zmianę nazwy tabeli (jeśli to możliwe, jakieś ustawienia zabezpieczeń?), Ponowne utworzenie pustej tabeli z poprawnymi kluczami spowoduje migrację wszystkich danych do tej tabeli. Musisz upewnić się, że masz na to wystarczająco dużo miejsca.
źródło
W moim przypadku chcę dodać kolumnę do klucza podstawowego (kolumna4). Użyłem tego skryptu do dodania column4
źródło
możesz zmienić nazwy obiektów z ograniczeniami za pomocą sp_rename (zgodnie z opisem w tej odpowiedzi )
na przykład:
źródło