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


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.