![]() |
|
Модераторы: Akella |
![]()
|
|
| Gluttton |
|
||||||||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 7 Всего: 54 |
Доброго времени суток!
Возникла практическая задача, при решении которой целесеообразно реализовать связь один-к-одному. Не обладая опытом работы с СУБД, я реализовал ограничение с использованием триггера:
Но как я узнал позднее этот способ череват ошибками, которые могут вывести БД из согласованного состояния. Вопрос: как в Firebird (2.5) можно реализовать ограничение один-к-одному? В качестве тестовых данных предлагаю (все "наполнение" таблиц умышленно удалено с целью упрощения, я думаю, что это не повлияет на суть решения проблемы, т.о. оставлены только ключевые поля): - таблица учета неисправностей (не типов неисправностей, а именно фактов неисправностей):
- таблица уведомлений о неисправности (согласно бизнес-логике одной неисправности может соответствовать одно уведомление, более того само уведомление и определяет сам факт возникновения неисправности):
Триггер приведен выше. Кроме того, я обьявил исключение:
Для генерации автоинкрементных значений полей id обоих таблиц используются пары генератор-триггер - думаю, что они здесь не актуальны. -------------------- Слава Україні! |
||||||||
|
|||||||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 2 Всего: 161 |
и баста. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Gluttton |
|
|||
![]() Начинающий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1170 Регистрация: 28.8.2008 Где: Феодосия Репутация: 7 Всего: 54 |
Zloxa, нет слов -------------------- Слава Україні! |
|||
|
||||
![]()
|
| Правила форума "Interbase" | |
|
|
Обязательно указание: 1. Версию InterBase (Firebird, Yaffil) 2. Способа доступа (ADO, BDE, IBX и т.д.)
Если Вам понравилась атмосфера форума, заходите к нам чаще! С Уважением, Akella. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Firebird, Interbase | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |