Я хочу змінити стовпчик таблиці, щоб він був нульовим. Я використав:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Це дає помилку на Modify
. Який правильний синтаксис?
Я хочу змінити стовпчик таблиці, щоб він був нульовим. Я використав:
ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations NULL
Це дає помилку на Modify
. Який правильний синтаксис?
Відповіді:
для користувачів Oracle Database 10 г:
alter table mytable modify(mycolumn null);
Ви отримуєте "ORA-01735: недійсний варіант ALTER TABLE", якщо ви намагаєтесь зробити інше
ALTER TABLE mytable ALTER COLUMN mycolumn DROP NOT NULL;
Хоча я не знаю, якими RDBMS ви користуєтесь, вам, ймовірно, потрібно дати всю специфікацію стовпця, а не просто сказати, що тепер ви хочете, щоб це було нульовим. Наприклад, якщо він зараз є INT NOT NULL
, вам слід видати ALTER TABLE Merchant_Pending_Functions Modify NumberOfLocations INT
.
Null
| NOT NULL
не вказано, стовпець буде нульовим.
Як зауважили інші, точний синтаксис команди змінюється в різних смаках СУБД. Синтаксис, який ви використовуєте, працює в 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>
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT null;
Це буде працювати для вас.
Якщо ви хочете змінити стовпець "null", щоб дозволити "null", не потрібно включати пункт "null". Тому що стовпці за замовчуванням стають недійсними.
ALTER TABLE Merchant_Pending_Functions MODIFY COLUMN `NumberOfLocations` INT;
Це залежить від того, який SQL Engine ви використовуєте, в Sybase ваша команда працює добре:
ALTER TABLE Merchant_Pending_Functions
Modify NumberOfLocations NULL;
Oracle
ALTER TABLE Merchant_Pending_Functions MODIFY([column] NOT NULL);