DatabaseCreation: One active subscription for SIM.sql

File One active subscription for SIM.sql, 1.1 KB (added by 231094, 3 weeks ago)
Line 
1CREATE OR REPLACE FUNCTION trg_fn_prevent_duplicate_active_sim()
2 RETURNS TRIGGER LANGUAGE plpgsql AS $$
3DECLARE
4 v_existing_sub BIGINT;
5BEGIN
6 IF NEW.end_date IS NULL AND NEW.sim_id IS NOT NULL THEN
7 SELECT subscription_id INTO v_existing_sub
8 FROM sim_card_subscription_history
9 WHERE sim_id = NEW.sim_id AND end_date IS NULL
10 AND sim_card_subscription_history_id<>NEW.sim_card_subscription_history_id
11 LIMIT 1;
12
13 IF FOUND THEN
14 RAISE EXCEPTION
15 'SIM card (sim_id=%) is already actively assigned to '
16 'subscription_id=%. Close the existing assignment first.',
17 NEW.sim_id, v_existing_sub;
18 END IF;
19 END IF;
20 RETURN NEW;
21END;
22$$;
23
24drop trigger trg_prevent_duplicate_active_sim on sim_card_subscription_history;
25drop function trg_fn_prevent_duplicate_active_sim();
26
27CREATE OR REPLACE TRIGGER trg_prevent_duplicate_active_sim
28 BEFORE UPDATE or INSERT ON sim_card_subscription_history
29 FOR EACH ROW
30EXECUTE FUNCTION trg_fn_prevent_duplicate_active_sim();