Зміна стовпця, який буде нульовим


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фактичним типом даних.


43

для користувачів Oracle Database 10 г:

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.



5

Хоча я не знаю, якими RDBMS ви користуєтесь, вам, ймовірно, потрібно дати всю специфікацію стовпця, а не просто сказати, що тепер ви хочете, щоб це було нульовим. Наприклад, якщо він зараз є INT NOT NULL, вам слід видати ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT.


Це правильна та описова відповідь, тому просто уточнення, чи 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>


0
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;

Це буде працювати для вас.

Якщо ви хочете змінити стовпець "null", щоб дозволити "null", не потрібно включати пункт "null". Тому що стовпці за замовчуванням стають недійсними.

ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;

0

Це залежить від того, який SQL Engine ви використовуєте, в Sybase ваша команда працює добре:

ALTER TABLE Merchant_Pending_Functions 
Modify NumberOfLocations NULL;

0

Oracle

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


Чи має ця відповідь принести що - небудь нове по відношенню до @ IGORS ігрового відповіді ? А що означає SQL_SCRIPT?
— jpeg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.