pgsql/investigations/ar-cash.sql
[Pman.Xtuple] / pgsql / shipitem_trigger_change.sql
1
2
3 CREATE OR REPLACE FUNCTION shipitem_trigger_change() RETURNS trigger 
4 AS $BODY$
5 DECLARE
6     v_shiphead_order_id INT;
7     v_coitem_cohead_id INT;
8 BEGIN
9     
10     -- verify that the order item is from the same ship
11     
12     SELECT
13             shiphead_order_id
14         INTO
15             v_shiphead_order_id
16         FROM
17             shiphead
18         WHERE
19             shiphead_id = NEW.shipitem_shiphead_id
20         LIMIT 1;
21     
22     SELECT
23             coitem_cohead_id
24         INTO
25             v_coitem_cohead_id
26         FROM
27             coitem
28         WHERE
29             coitem_id = NEW.shipitem_orderitem_id
30         LIMIT 1;
31         
32         
33     IF v_coitem_cohead_id != v_shiphead_order_id THEN
34         RAISE EXCEPTION 'Attempted create a ship item with the wrong order item';
35     END IF; 
36     
37    RETURN NEW;
38
39 END;
40 $BODY$
41   LANGUAGE plpgsql VOLATILE
42   COST 100;
43   
44 ALTER FUNCTION  shipitem_trigger_change()
45   OWNER TO admin;
46
47
48 GRANT ALL ON FUNCTION shipitem_trigger_change() TO xtrole;
49
50 CREATE TRIGGER _shipitem_trigger_change
51     BEFORE INSERT OR UPDATE  ON  shipitem
52         FOR EACH ROW EXECUTE PROCEDURE shipitem_trigger_change();
53