2017-07-20 2 views
1

Ich möchte den Datentypen des Primärschlüssels von varchar zu bigint ändern.Wie ändert man den Typ einer Spalte, die Referenzen als Fremdschlüssel in einer anderen Tabelle ist?

Ich versuchte folgenden Befehl.

aber es funktioniert nicht, da diese Spalte als Fremdschlüssel in anderen Tabellen referenziert wird.

Wie kann ich seinen Typ ändern, ohne Daten der Tabelle durch Sql-Abfrage zu verlieren?

+2

Sie haben die Referenz fallen, bevor anschließend die Säule dann neu die Referenz zu verändern. Am besten in einer Transaktion. Eventuell müssen Sie die Daten aus dieser Spalte in einer temporären Tabelle puffern, um sie bei Bedarf neu zu erstellen. – Adwaenyth

Antwort

0

Es gibt mehrere Schritte, um dies zu erreichen. Aber die Hauptsache ist, dass du zuerst den Schlüssel fallen lassen musst.
Zuerst fallen die primäre (ändern name_of_primary_key, mit Ihren real):

ALTER TABLE dbo.Company DROP CONSTRAINT name_of_primary_key; 

Ändern Sie den Datentyp (ersetzen length mit Ihrem gewünschten):

alter table table alter column foreign_key_column bigint(length) 

Dann aus anderen Tabellen, die Fremdschlüssel fallen (Machen Sie dies für jede Tabelle, und ersetzen Sie die zwei Argumente, mit Ihrer realen aus der db):

ALTER TABLE table DROP FOREIGN KEY foreign_key_column; 

Nun, Sie cha nge der Datentyp des Fremdschlüsselspalts (ersetzen length mit Ihrem gewünschten):

alter table table alter column foreign_key_column bigint(length); 
+0

'bigint' hat keine angegebene' Länge'. – SqlZim

Verwandte Themen