Как можно удалить ненулевое ограничение? - PullRequest
59 голосов
/ 09 апреля 2010

Допустим, есть таблица, созданная следующим образом:

create table testTable ( colA int not null )

Как бы вы отбросили ненулевое ограничение? Я ищу что-то вроде

ALTER TABLE testTable ALTER COLUMN colA DROP NOT NULL;

, как бы это выглядело, если бы я использовал PostgreSQL. К моему изумлению, насколько мне удалось найти, документы MySQL, Google и, да, даже Stackoverflow (несмотря на десятки или сотни вопросов, связанных с NULL), похоже, не ведут к единственному простому выражению SQL который сделает работу.

Ответы [ 7 ]

79 голосов
/ 09 апреля 2010

Я бы попробовал что-то вроде этого

ALTER TABLE testTable MODIFY COLUMN colA int;
9 голосов
/ 09 апреля 2010

В MySQL обнуляемость является частью типа данных, а не ограничением Итак:

ALTER TABLE testTable MODIFY COLUMN colA int null; 
2 голосов
/ 14 июля 2011

Синтаксис был на самом деле близок:

ALTER TABLE testTable CHANGE colA colA int null;
1 голос
/ 23 июля 2015

Попробуйте

ALTER TABLE testTable MODIFY COLUMN columnA int;
0 голосов
/ 29 декабря 2016

Когда вы изменяете ограничение таблицы или тип данных в Mysql Workbench, тогда он показывает код, который он собирается выполнить для выполнения запроса. И это запрос, который я получил из этого ящика.

ALTER TABLE `table_name`.`column_name`  CHANGE COLUMN `column_name` `colunm_name`datatype NULL ;

Но суть в том, что первичный ключ не может быть нулевым, вместо него нужно установить его уникальным.

0 голосов
/ 16 октября 2016

Это работает для меня

ALTER TABLE table_name
MODIFY COLUMN column_name VARCHAR(25) UNIQUE;
0 голосов
/ 09 ноября 2014
ALTER TABLE test.tbl_employee 
CHANGE COLUMN `DepartmentId` `DepartmentId` INT(11) NULL;
...