it-swarm.com.de

Wie ändere ich den Datentyp einer Spalte, ohne die Spalte mit Abfrage zu löschen?

Ich habe eine Spalte, die einen Datentyp hat: datetime. Aber jetzt möchte ich es in den Datentyp varchar konvertieren. Kann ich den Datentyp ändern, ohne die Spalte fallen zu lassen? Wenn ja, bitte erläutern Sie, wie?

56
Samiksha

Wenn ALTER COLUMN nicht funktioniert.

Es ist nicht ungewöhnlich, dass das Ändern einer Spalte fehlschlägt, da dadurch die gewünschte Transformation nicht durchgeführt werden kann. In diesem Fall besteht die Lösung darin, eine Dummy-Tabelle TableName_tmp zu erstellen, die Daten mit Ihrer speziellen Umwandlung in den Masseneinfügebefehl zu kopieren, die Originaltabelle zu löschen und die tmp-Tabelle in den Namen der Originaltabelle umzubenennen. Sie müssen die Fremdschlüsseleinschränkungen löschen und neu erstellen, und aus Gründen der Leistung möchten Sie wahrscheinlich Schlüssel erstellen, nachdem Sie die tmp-Tabelle ausgefüllt haben.

Hört sich nach viel Arbeit an? Eigentlich nicht.

Wenn Sie SQL Server verwenden, können Sie das SQL Server Management Studio die Arbeit für Sie erledigen lassen!

Rufen Sie Ihre Tabellenstruktur auf (klicken Sie mit der rechten Maustaste auf die Tabelle und wählen Sie "Ändern") und nehmen Sie alle Ihre Änderungen vor (wenn die Spaltenumwandlung unzulässig ist, fügen Sie einfach Ihre neue Spalte hinzu - Sie werden sie in Kürze korrigieren). Klicken Sie mit der rechten Maustaste auf den Hintergrund des Modify-Fensters und wählen Sie "Generate Change Script". In dem angezeigten Fenster können Sie das Änderungsskript in die Zwischenablage kopieren.

Brechen Sie die Änderung ab (Sie möchten Ihr Skript schließlich testen) und fügen Sie das Skript dann in ein neues Abfragefenster ein. Ändern Sie nach Bedarf (fügen Sie beispielsweise Ihre Transformation hinzu, während Sie das Feld aus der tmp-Tabellendeklaration entfernen), und Sie haben jetzt das Skript, das für Ihre Transformation erforderlich ist.

28

MSDN sagt

ALTER TABLE mytable ALTER COLUMN mycolumn newtype

Beachten Sie die Einschränkungen der im Artikel aufgeführten ALTER COLUMN-Klausel

89
devio
ALTER TABLE [table name] MODIFY COLUMN [column name] datatype
12
Pratyay
ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20)
10
capotej

es ist einfach! Geben Sie einfach die folgende Abfrage ein

alter table table_Name alter column spaltenname datentyp

alter table Message alter column message nvarchar(1024);

es wird fröhliches programmieren funktionieren

7
SiwachGaurav
ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR(20)
7
Leon Tayson

Mit SQL Server 2008 und höher mit dieser Abfrage:

ALTER TABLE [RecipeInventorys] ALTER COLUMN [RecipeName] varchar(550)
6
duc14s

Diese Arbeit für Postgresql 9.0.3

 alter table [table name] ALTER COLUMN [column name] TYPE [character varying];

http://www.postgresql.org/docs/8.0/static/sql-altertable.html

2
atrichkov

ALTER TABLE YourTableNameHere ALTER COLUMN YourColumnNameHere VARCHAR (20) Dies ist perfekt für die Änderung des Datentyps

1
user2650031
ALTER TABLE [table_name] ALTER COLUMN [column_name] varchar(150)
1

ALTER TABLE yourtable MODIFY COLUMN Ihr Spaltendatentyp

0
Meder Mamutov

Oracle - Alter table table_name modify (Spaltenname new_DataType);

0
Vinda