Ich habe eine Tabelle, in der eine Spalte in der Primärschlüsseleinschränkung fehlt. Anstatt es über SQL Server zu bearbeiten, möchte ich es in ein Skript einfügen, um es als Teil unserer Aktualisierungsskripte hinzuzufügen.
Welche Syntax kann ich dazu verwenden? Muss ich die Schlüsselbeschränkung löschen und neu erstellen?
sql-server
Jason
quelle
quelle
Antworten:
Ja. Die einzige Möglichkeit wäre, die Einschränkung mit einer Alter-Tabelle zu löschen und dann neu zu erstellen.
quelle
alter table PatientsInfo drop constraint PK__Patients__1CBB51380A338187
funktioniert der Einschränkungsname hier nicht in Anführungszeichendb
.table
DROP PRIMARY KEY, ADD PRIMARY KEY (id1
,id2
);PRIMARY KEY CONSTRAINT
kann nicht geändert werden, Sie können es nur löschen und erneut erstellen. Bei großen Datenmengen kann dies zu einer langen Laufzeit und damit zur Nichtverfügbarkeit von Tabellen führen.quelle
In Bezug auf die Leistung macht es keinen Sinn, nicht gruppierte Indizes zu behalten, da diese beim Löschen und Erstellen erneut aktualisiert werden. Wenn es sich um einen großen Datensatz handelt, sollten Sie in Betracht ziehen, die Tabelle umzubenennen (falls möglich, Sicherheitseinstellungen?). Wenn Sie eine leere Tabelle mit den richtigen Schlüsseln neu erstellen, werden alle Daten dorthin migriert. Sie müssen sicherstellen, dass Sie genügend Platz dafür haben.
quelle
In meinem Fall möchte ich einem Primärschlüssel eine Spalte hinzufügen (Spalte 4). Ich habe dieses Skript verwendet, um column4 hinzuzufügen
quelle
Sie können Einschränkungsobjekte mit sp_rename umbenennen (wie in dieser Antwort beschrieben ).
beispielsweise:
quelle