2013-08-10 3 views
1

Я использую базу данных MS Access (2003). После того, как я создаю столбец я не установлен NULL, используя SQL заявление:MS Access - выражение sql для разрешения null?

ALTER TABLE Table1 
ALTER column myColumn INTEGER not null  

Есть ли способ, чтобы изменить его обратно, чтобы нулевые значения? Я уже пробовал:

ALTER TABLE Table1 
ALTER column myColumn INTEGER null  

но ничего ...

+0

Получена ошибка или произошло буквально «ничего»? –

+0

Ошибок нет, но ничего не изменилось .. – Tracer

ответ

4

Вы не можете указать null в ALTER TABLE (хотя not null допускается)

См. Ниже documentation, а также это discussion on this toppic

Синтаксис

ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL]  [CONSTRAINT index] |  ALTER COLUMN field type[(size)] |  CONSTRAINT multifieldindex} |  DROP {COLUMN field I CONSTRAINT indexname} } 


Old School Решение: -

  • создать новый temporray поле утратившим с тем же типом данных
  • обновление новый временный поле к существующему NOT N ULL поле
  • удалить старую NOT NULL поле
  • создать падает на порядок столбец с тем же типом данных снова без NOT NULL обновление
  • существующего поля для временной области
  • если бы индексы на существующем поле, воссоздать эти
  • уронить временное поле
+0

Это позволяет мне указать null в таблице alter, но это не имеет никакого эффекта, и это моя проблема. Я видел ваше решение в некоторых других местах, но я надеялся, что мне это не понадобится. Спасибо. – Tracer

0

Попробуйте что-то вроде этого, используя MODIFY: -

ALTER TABLE Table1 MODIFY myColumn INT NULL; 
+0

синтаксическая ошибка ... – Tracer

+0

Не могли бы вы попробуете еще раз и сообщите мне ошибку Синтаксиса, которую вы получаете? –

+0

"Ошибка синтаксиса в инструкции ALTER TABLE.". – Tracer

0

единственный способ я нашел это использовать DAO непосредственно на столе. Установить db.TableDefs (strTable1) .Fields (strFieldName) .Required = false

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