Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Вопрос по структуре БД


Автор: Eugeneus2010 11.9.2010, 16:15
Есть две таблицы

create table A (ida integer, maxdate date)

create table B (idb integer, ida integer, dateb date)

В таблице B может быть произвольное число записей с одинаковым ida. Возможно ли на тригерах так организовать обновление поля maxdate, чтобы оно всегда было равно (select max(dateb) from B where B.ida=A.ida) ? 

Firebird 1.5. Способ доступа не важен.

Автор: Deniz 13.9.2010, 05:27
Цитата(Eugeneus2010 @  11.9.2010,  18:15 Найти цитируемый пост)
Возможно ли на тригерах так организовать обновление поля maxdate
возможно, но:
1. Будет слишком много доп. запросов и обновлений
2. Нет 100% гарантии (при откате транзакции может остаться некорректная информация)
А для чего все это нужно?
Может лучше view'шку сделать?

Автор: Eugeneus2010 13.9.2010, 18:24
Цитата
А для чего все это нужно?
Может лучше view'шку сделать? 


Может быть. Интересует принципиальная возможность реализации такого обновления (без ошибок).

Цитата
при откате транзакции может остаться некорректная информация


Можно про это подробнее?

Автор: Akina 13.9.2010, 20:07
Какая смысловая нагрузка на каждом из полей каждой таблицы? ибо мне кажется, что данные переопределены.

Автор: Deniz 14.9.2010, 05:27
Цитата(Eugeneus2010 @  13.9.2010,  20:24 Найти цитируемый пост)
Можно про это подробнее?
Конечно, читайте http://www.ibase.ru/develop.htm#trans в части работы с транзакциями.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)