M deploy/notify_low_balance.sql => deploy/notify_low_balance.sql +12 -4
@@ 4,14 4,22 @@
BEGIN;
-CREATE OR REPLACE FUNCTION check_and_notify_low_balance() RETURNS TRIGGER AS $$
+CREATE OR REPLACE FUNCTION check_and_notify_low_balance(
+ customerid TEXT
+) RETURNS VOID AS $$
DECLARE
bal NUMERIC;
BEGIN
- SELECT balance INTO bal FROM balances WHERE customer_id = NEW.customer_id;
+ SELECT balance INTO bal FROM balances WHERE customer_id = customerid;
IF bal < 5 THEN
- SELECT pg_notify('low_balance', NEW.customer_id);
+ PERFORM pg_notify('low_balance', customerid);
END IF;
+ END;
+$$ LANGUAGE plpgsql;
+
+CREATE OR REPLACE FUNCTION check_and_notify_low_balance_trigger() RETURNS TRIGGER AS $$
+ BEGIN
+ PERFORM check_and_notify_low_balance(NEW.customer_id);
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
@@ 20,6 28,6 @@ CREATE TRIGGER notify_low_balance
AFTER INSERT ON transactions
FOR EACH ROW
WHEN (NEW.amount < 0)
- EXECUTE PROCEDURE check_and_notify_low_balance();
+ EXECUTE PROCEDURE check_and_notify_low_balance_trigger();
COMMIT;
M revert/notify_low_balance.sql => revert/notify_low_balance.sql +1 -0
@@ 3,6 3,7 @@
BEGIN;
DROP TRIGGER notify_low_balance ON transactions;
+DROP FUNCTION IF EXISTS check_and_notify_low_balance_trigger;
DROP FUNCTION check_and_notify_low_balance;
COMMIT;