2013-10-26 3 views
1

Я добавил несколько столбцов (100+) с атрибутом TINYINT(1) и значением по умолчанию NULL, но проблема в том, что значение по умолчанию должно соответствовать 0.Замените DEFAULT с NULL на 0

Есть ли способ сделать это с помощью запроса, обнаружив поля TINYINT(1), а затем изменив таблицу?

Пожалуйста, помогите мне.

+1

экспортировать весь сценарий в файл .sql и найти столбец tinyint (1) и заменить дизайн по умолчанию 0 –

+0

Это по существу дубликат столбцов [Alter All TinyInt (1) в базе данных, чтобы не было нулевого значения по умолчанию 0] (http: /stackoverflow.com/questions/9135716/alter-all-tinyint1-columns-in-database-to-not-null-default-0?rq=1), хотя ответ Гийома ниже более полный. – StvnW

ответ

2

Вы можете выполнить запрос, чтобы найти эти столбцы в INFORMATION_SCHEMA, который представляет собой кучу представлений, автоматически поддерживаемых сервером.

Попробуйте это:

USE INFORMATION_SCHEMA; 
SELECT * FROM `COLUMNS` 
WHERE COLUMN_TYPE = 'tinyint(1)' 

Вы можете добавить фильтр в базе данных, или таблицы. Затем, вы можете создавать запросы непосредственно с этой точкой зрения:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, ".", TABLE_NAME, " MODIFY ", COLUMN_NAME, " tinyint(1) DEFAULT 0") AS q 
FROM `COLUMNS` 
WHERE COLUMN_TYPE = 'tinyint(1)' 

Это будет генерировать запросы, как: ALTER TABLE schema.table MODIFY column tinyint(1) DEFAULT 0, что то, что вам нужно выполнить, чтобы изменить значение по умолчанию.

Смежные вопросы