Potrzebuję ALTER
typów danych z kilku kolumn w tabeli.
W przypadku pojedynczej kolumny działa dobrze:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0)
Ale jak zmienić wiele kolumn w jednej instrukcji? Nie działa:
ALTER TABLE tblcommodityOHLC
ALTER COLUMN
CC_CommodityContractID NUMERIC(18,0),
CM_CommodityID NUMERIC(18,0)
sql-server
tsql
alter-column
D.mahesh
źródło
źródło
Odpowiedzi:
To jest niemożliwe. Będziesz musiał to zrobić jeden po drugim.
Możesz utworzyć tabelę tymczasową ze zmodyfikowanymi kolumnami, skopiować dane, upuścić oryginalną tabelę i zmienić nazwę tabeli tymczasowej na oryginalną.
źródło
You will need to do this one by one.
więc o co chodzi, po prostu użyj wieluALTER TABLE ALTER COLUMN
poleceń?"Each statement means a new scan"
: Niekoniecznie @erikkallen. W niektórych przypadkach ALTER kolumna to prosta zmiana metadanych. Zapraszam na jutrzejszy wykład na temat „SQL Internals - Physical Table Structure under the hood, and implementation on real case scenarios
”, aby zobaczyć to wszystko w praktyce :-)Wykonywanie wielu
ALTER COLUMN
czynności w ramach jednejALTER TABLE
instrukcji nie jest możliwe.Zobacz
ALTER TABLE
składnię tutajMożesz zrobić wiele
ADD
lub wieleDROP COLUMN
, ale tylko jedenALTER COLUMN
.źródło
Jak odpowiedzieli inni, potrzebujesz wielu
ALTER TABLE
instrukcji.Spróbuj wykonać następujące czynności:
źródło
Poniższe rozwiązanie nie jest pojedynczym poleceniem zmiany wielu kolumn, ale tak, ułatwia życie:
Wygeneruj
CREATE
skrypt tabeli .Wymień
CREATE TABLE
sięALTER TABLE [TableName] ALTER COLUMN
na pierwszej liniiUsuń niechciane kolumny z listy.
Zmień typy danych kolumn, jak chcesz.
Wykonaj Znajdź i zamień… w następujący sposób:
NULL
,NULL; ALTER TABLE [TableName] ALTER COLUMN
Uruchom skrypt.
Mam nadzieję, że zaoszczędzi to dużo czasu :))
źródło
Jak powiedziało wielu innych, będziesz musiał użyć wielu
ALTER COLUMN
instrukcji, po jednej dla każdej kolumny, którą chcesz zmodyfikować.Jeśli chcesz zmodyfikować wszystkie lub kilka kolumn w swojej tabeli na ten sam typ danych (np. Rozszerzenie pola VARCHAR z 50 do 100 znaków), możesz automatycznie wygenerować wszystkie instrukcje, korzystając z poniższego zapytania. Ta technika jest również przydatna, jeśli chcesz zamienić ten sam znak w wielu polach (na przykład usunąć \ t ze wszystkich kolumn).
Spowoduje to wygenerowanie
ALTER TABLE
zestawienia dla każdej kolumny.źródło
Jeśli dokonasz zmian w Management Studio i wygenerujesz skrypty, utworzy nową tabelę i wstawi do niej stare dane ze zmienionymi typami danych. Oto mały przykład zmiany typów danych w dwóch kolumnach
źródło
Jeśli nie chcesz pisać wszystkiego samodzielnie i zmienić wszystkie kolumny na ten sam typ danych, może to ułatwić:
Możesz skopiować i wkleić dane wyjściowe jako zapytanie
źródło
źródło
Dzięki przykładowemu kodowi Evana byłem w stanie go bardziej zmodyfikować i uzyskać bardziej specyficzne dla tabel zaczynających się od, określonych nazw kolumn ORAZ również obsługiwać specyfikę ograniczeń. Uruchomiłem ten kod, a następnie skopiowałem kolumnę [CODE] i wykonałem go bez problemu.
źródło
źródło
Możemy zmienić wiele kolumn w jednym zapytaniu, na przykład:
Po prostu podaj zapytania rozdzielone przecinkami.
źródło
Umieść
ALTER COLUMN
instrukcję w nawiasie, powinno działać.źródło
Jeśli dobrze zrozumiałem twoje pytanie, możesz dodać wiele kolumn w tabeli za pomocą poniższego zapytania.
Pytanie:
źródło