Changeset d715225 for music/triggers/customer_deletion.sql
- Timestamp:
- 05/07/25 11:05:41 (3 weeks ago)
- Branches:
- master
- Children:
- 75ea229
- Parents:
- d1a8cb0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
music/triggers/customer_deletion.sql
rd1a8cb0 rd715225 1 DROP TRIGGER IF EXISTS trg_customer_deletion ON customer; 2 DROP FUNCTION IF EXISTS customer_deletion(); 3 1 4 CREATE OR REPLACE FUNCTION customer_deletion() 2 5 RETURNS TRIGGER AS $$ 6 DECLARE 7 total_spent NUMERIC(10, 2); 8 invoice_count INTEGER; 3 9 BEGIN 4 INSERT INTO deleted_customer_log (first_name, last_name, deleted_at) 5 VALUES (OLD.first_name, OLD.last_name, NOW()); 10 SELECT COALESCE(SUM(total), 0), COUNT(*) 11 INTO total_spent, invoice_count 12 FROM invoice 13 WHERE customer_id = OLD.customer_id; 14 15 INSERT INTO deleted_customer_log ( 16 first_name, last_name, deleted_at, total_spent, invoice_count 17 ) 18 VALUES ( 19 OLD.first_name, OLD.last_name, NOW(), total_spent, invoice_count 20 ); 21 6 22 RETURN OLD; 7 23 END; 8 24 $$ LANGUAGE plpgsql; 9 25 26 DROP TRIGGER IF EXISTS trg_customer_deletion ON customer; 27 10 28 CREATE TRIGGER trg_customer_deletion 11 AFTERDELETE ON customer29 BEFORE DELETE ON customer 12 30 FOR EACH ROW 13 31 EXECUTE FUNCTION customer_deletion();
Note:
See TracChangeset
for help on using the changeset viewer.