Bab
Дата: 21.12.2011 08:36:15
Hi All
Есть таблица, в ней есть not null поле. Внешние условия поменялись и ограничение not null более не актуально. Как отменить это ограничение программно.
До кучи поле индексированное и участвует во внешних связях.
Если иметь под рукой Access - дело десяти секунд - в конструкторе в комбобоксе выбираем "обязательное - нет" - и все чудесно. Проблема в том, что клиент - далеко и акцеса у него нет и покупать его для десятисекундного дела клиент не будет. Отсюда и обязательное требование к программности отмены ограничения - надо написать патчер базы.
Имея некоторый опыт разработки я полагаю, что то, что можно сделать через гуёвый интерфейс можно сделать и программно, но вот никак у меня что-то не получается.
Решил пойти обходным путём: удаляю индексы искомого поля, удаляю ограничения по внешним связям, добавляю "временное" поле без ограничения not null, переношу данные из искомого поля во временное, удаляю искомое поле, создаю искомое поле заново но без ограничения, переношу данные из временного столбца в новое искомое, создаю индексы и теперь надо бы восстановить внешние связи, но тут крах - ошибка синтаксиса alter table на on update!
Итого, две проблемы:
1) как программно удалить ограничение not null столбца;
или
2) как программно добавить внешний ключ с каскадным обновлением/удалением.
Ответ на любой из этих вопросов решит мою проблему.