Zmiana maksymalnej długości kolumny varchar?
Próbuję zaktualizować długość kolumny varchar z 255 znaków do 500 bez utraty zawartości. Mam upuszczone i ponownie utworzone tabele wcześniej, ale nigdy nie zostały narażone na Alter statement, który jest to, co uważam, że muszę użyć, aby to zrobić. Znalazłem dokumentację tutaj: ALTER TABLE (Transfact-SQL) jednak nie mogę zrobić z tego głowy ani ogona.
Mam do tej pory (zasadniczo nic niestety):
alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3
Jak podchodzisz do tego? Czy istnieje lepsza dokumentacja dla tego Oświadczenia tam (zrobiłem kilka poszukiwań przykładowe oświadczenie, ale wyszedł pusty)?
9 answers
Potrzebujesz
ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]
Ale pamiętaj, aby w razie potrzeby wyraźnie określić NOT NULL
.
ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;
Jeśli pozostawisz to nieokreślone, jak poniżej...
ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);
Wtedy kolumna domyślnie zezwala na null, nawet jeśli pierwotnie była zdefiniowana jako NOT NULL
. tj. pominięcie specyfikacji w ALTER TABLE ... ALTER COLUMN
jest zawsze traktowane jako.
ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;
To zachowanie różni się od tego, które stosuje się dla nowych kolumn utworzonych za pomocą ALTER TABLE
(lub w czasie CREATE TABLE
). Tam domyślna nullability zależy od ANSI_NULL_DFLT
ustawienia.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-16 15:47:01
Zwiększenie rozmiaru kolumny o ALTER
nie spowoduje utraty danych:
alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3 varchar(500)
Jak podkreśla @ Martin, pamiętaj, aby wyraźnie określić NULL | NOT NULL
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-12 01:46:49
Możesz użyć modify
:
ALTER TABLE `table name`
modify COLUMN `column name` varchar("length");
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-11-28 16:36:46
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);
Późno na pytanie - ale używam Oracle SQL Developer i odpowiedź @ anonymous była najbliższa, ale ciągle otrzymywała Błędy składniowe, dopóki nie edytowałem zapytania do tego.
Hope this helps someone
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-08-07 19:48:06
Użycie narzędzia Maria-DB i DB-Navigator wewnątrz IntelliJ, MODIFY Column zadziałało dla mnie zamiast Alter Column
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-04 18:57:42
Ja też miałem ponad wątpliwości, to co dla mnie zadziałało to
ALTER TABLE `your_table` CHANGE `property` `property`
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-21 16:26:12
To działało u mnie w db2:
alter table "JOBS" alter column "JOB_TITLE" set data type varchar(30);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-10-28 12:28:03
Dla MariaDB użyj zmodyfikuj kolumnę :
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR (500);
To zadziała.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-02-10 10:30:59
Jako alternatywę można zapisać stare dane i utworzyć nową tabelę z nowymi parametrami.
W Sql Server Management Studio: "twoja baza danych" => zadanie => generatescripts => wybierz konkretny obiekt bazy danych => "twoja tabela" => zaawansowane => typy danych do skryptu - schemat i dane => Generuj
Osobiście tak zrobiłem.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-07 11:07:39