Операции с переменными времени на PL/SQL. Как?

Здравствуйте!
Подскажи пожалуйста.

Предположим есть таблица
Tabl
--------------------------------------
Поле1 | Поле2 | Поле3 |
--------------------------------------
integer | tinterval | tinterval |

Я хочу написать тригерную функцию которая бы автоматически умножала Поле1*Поле2, а результат записывала в Поле3. Чтобы оператор при внесении данных в Поле1 и Поле2 не занимался умножением для Поле3 и не мог ошибиться.
Я смог реализовать это на PL/Perl, взяв небольшой пример из интернета и пару библиотек из CPAN. Но сейчас база работает под Postgresql-8.4.3 собранная компанией "1C", причём без поддержки PL/PERL. Из языков только PL/C, PL/SQL, PL/internal. Решил попробовать найти пример на PL/SQL и ни один не смог заставить работать. Т.е. я даже не смог создать функцию.
Подскажите пожалуйста, мне нужен рабочий пример, хоть будет от чего отталкиваться. Все книги по PL/SQL в основном под Oracle и предлагаемые примеры копи-пастом у меня не пошли.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Самое смешное, что для этой

Самое смешное, что для этой задачи вам не нужен триггер, вы можете либо напрямую запрашивать сумму из таблицы:

SELECT поле1, поле2, поле1*поле2 AS поле3 FROM таблица;

или сделать VIEW с псевдоколонкой поле 3

CREATE VIEW новая_таблица AS SELECT поле1, поле2, поле1*поле2 AS поле3 FROM таблица;

VIEW не хранится на диске, так что объём базы от этого не увеличится.

Спасибо! Действительно смешно

Спасибо!
Действительно смешно и просто.
Я правильно понимаю, что если результат этого селекта где-то использовать дальше, то последующие запросы будут отрабатывать медленнее, чем если бы брали готовый результат из моей же таблицы? Если так, то в каких случаях имеет смысл держать такой промежуточный результат уже вычисленным? Зависит от кол-во строк или вложенности запросов?

Да, чуточку медленней будет,

Да, чуточку медленней будет, но не сильно. Операция умножения довольно проста, а основные проблемы с производительностью возникают при обработке условий выборки, группировки, дистинкта и т.д. Учитывая это, затраты на умножение уже двух готовых, выбранных полей ничтожны.

Опции просмотра комментариев

Выберите предпочитаемый вами способ показа комментариев и нажмите "Сохранить настройки" для активации изменений.

Back to top

(С) Виктор Вислобоков, 2008-2023