Реализация диалогового окна редактирования внешних связей
Да уж, целый день на это потратил. А думал, что окно уже к обеду будет готово. А нет, пришлось очень сильно заморочиться, чтобы его сделать. Пришлось снова фиксить косяки. Очень было трудно их профиксить. Сначала возникала ошибка, связанная с первичными ключами. Там говорилось, что присутствует более одного первичного ключа. При попытке создать связи между двумя таблицами возникал вот этот сбой. Сначала думал, что проделать это можно только с пустыми, не содержащими данных таблицами. От того о ошибка. Но ведь в моих Unit-тестах эта функция нормально работает и не даёт сбоев. Как же так? Короче, я так и не понял, почему возникала эта ошибка. Я взял и удалил те таблицы, на которых производил тестирование. А потом вместо них создал уже другие таблицы для тестирования создания внешних связей. И там всё заработало! Но почему? Ведь и на старых таблицах всё было правильно в плане их настроек. Да уж, бывают тайны, покрытые мраком.
И в этот раз мрак не совсем развеян. Но зато я знаю, что возможность создания внешних связей сделана. Просто нужно знать некий фокус с настройками связываемых таблиц. А дело с настройками там такое. Внешний ключ добавляется к дочерней таблице на столбец целочисленного типа данных без первичных ключей и авто-инкремента. В параметрах ключа указывается ссылка на родительскую таблицу и её столбец. Также в ключе задаются ограничения для операций обновления и удаления данных. Всё это видно на верхнем скриншотах в настройках внешних связей.
Да вот тут я, возможно, понял, почему возникала вышеописанная ошибка. Столбец родительской таблицы, который описывается во внешнем ключе так же не должен содержать первичного ключа и авто-инкремента. И тоже должен иметь целочисленный тип данных. Да, вероятно, причина в этом. Вот так. Хотя я вру. Память меня подводит. Как раз столбец родительской таблицы и должен содержать ещё и первичный ключ и с авто-инкрементом. Вот и дела. И вот снова: причина вышеописанной ошибки покрыта мраком. Ведь там я всё настраивал точно также. У меня иногда бывает иллюзия, что я нашел ответ на вопрос, тогда как на самом деле я его не нашел. Вот такие пироги.
Да, и на последнем скриншоте показаны настройки внешних связей, которые успешно срабатывают и не выдают ошибки.
Ну и вот, это всё, что я сегодня успел сделать. Я даже не успел перейти к реализацию отображения данным по внешним ключам в панели компоновки окна программы. К этому я перейду уже в следующий раз. Ну а на сегодня хорош. Так что теперь уже до новых постов и до новых свершений.



Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.