Изменение столбца, чтобы быть обнуляемым

318

Я хочу изменить столбец таблицы, чтобы быть обнуляемым. Я использовал:

ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL

Это дает ошибку при Modify. Какой правильный синтаксис?

ОЗУ
источник
7
Пожалуйста,
опубликуйте
1
Я удалил тег SQL Server, так как похоже, что он стал бесплатным для всех.
Мартин Смит

Ответы:

514

Предполагая SQL Server(на основе ваших предыдущих вопросов):

ALTER TABLE Merchant_Pending_Functions ALTER COLUMN NumberOfLocations INT NULL

Замените INTна ваш фактический тип данных.

Quassnoi
источник
43

для пользователей Oracle Database 10g:

alter table mytable modify(mycolumn null);

Вы получаете «ORA-01735: неверная опция ALTER TABLE», если вы попытаетесь иначе

ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
Игорь Сергеевич
источник
Круто, вам не нужно указывать тип данных, просто "null", чтобы сделать его обнуляемым.
Гейб Халсмер
41

Если бы это был синтаксис MySQL, этот тип отсутствовал бы, как указывают некоторые другие ответы. Правильный синтаксис MySQL был бы:

ALTER TABLE Merchant_Pending_Functions MODIFY NumberOfLocations INT NULL

Публикация здесь для ясности пользователям MySQL.

djjeck
источник
29

В PostgresQL это:

ALTER TABLE tableName ALTER COLUMN columnName DROP NOT NULL;
Пол ЛеБо
источник
5

Хотя я не знаю, какую СУБД вы используете, вам, вероятно, нужно указать всю спецификацию столбца, а не просто сказать, что вы хотите, чтобы она была обнуляемой. Например, если это в настоящее время INT NOT NULL, вы должны выдать ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.

Hammerite
источник
Это правильный и описательный ответ, поэтому просто уточнить, если Null| NOT NULLне указан, столбец будет обнуляться.
Хамид Гейдарян
4

Как уже отмечалось, точный синтаксис команды различается в зависимости от типа СУБД. Используемый вами синтаксис работает в Oracle:

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                      NOT NULL VARCHAR2(17)

SQL> alter table MACAddresses
  2       modify corrected_MACAddress null
  3  /

Table altered.

SQL> desc MACAddresses
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 COMPUTER                                           NUMBER
 MACADDRESS                                         VARCHAR2(12)
 CORRECTED_MACADDRESS                               VARCHAR2(17)

SQL>
APC
источник
0

Для HSQLDB:

ALTER TABLE tableName ALTER COLUMN columnName SET NULL;
Либор Б.
источник
0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Это будет работать для вас.

Если вы хотите изменить ненулевой столбец, чтобы разрешить нулевой, нет необходимости включать не нулевое предложение. Поскольку столбцы по умолчанию становятся не нулевыми.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
chamzz.dot
источник
0

Это зависит от того, какой SQL Engine вы используете, в Sybase ваша команда работает нормально:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;
ZORRO_BLANCO
источник
0

оракул

ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);

Родриго Итурсарри
источник
Приносит ли этот ответ что-то новое в отношении ответа @ IgorS ? А что означает SQL_SCRIPT?
JPEG