CREATE FUNCTION/TRIGGER

kvn

programmer
CREATE FUNCTION/TRIGGER

Предистория:
Есть две иаблицы owe - долги, и payments - пролаты.
owe:
id, uid, cost, date

payments:
id, uid, uah, date

и users:
uid, name.

Для того чтобы подсчитывать account of user (UID) написал ф-цию:
CREATE FUNCTION calc_account(int4) RETURNS float4 AS 'SELECT float4((SELECT sum(uah)/100.00 FROM payments WHERE uid = $1)-(SELECT sum(cost) FROM owe WHERE uid = $1));' LANGUAGE 'sql';

Но, ситуация такова, что если в таблице owe, или payments НЕТ записи о UID, т.е. empty set, то ф-ция возвращает тоже пустое значение.

Например: В таблице owe есть запись о том, что UID должен cost=100 WHERE uid = UID.
А в payments еще ничего нет, т.е. он не платил.
SELECT calc_account(UID) возвращает ПУСТО, но если в табличке payments будет 0, то все ОК.

ВОПРОС №1:
Как БОЛЕЕ правильно написать ф-цию calc_account(), чтобы она правильно отражала действительность?

ИЛИ:
Как сделать триггер на users, чтобы при инсерте, этот триггер добавлял в обе таблички нули, для данного UID.

П.С. При 0-вых значениях в обоих табличках все правильно работает.

Спасибо.
 
Сверху