Changes between Initial Version and Version 1 of Triggers


Ignore:
Timestamp:
08/20/25 23:25:59 (19 hours ago)
Author:
221071
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Triggers

    v1 v1  
     1= Тригери
     2== 1. Тригер за спречување на преклопени договори по оглас
     3* Тригер за забрана на преклопени договори (Lease) за ист оглас (Listing) ]. Целта е да се спречи креирање на изнајмувања со ранг на датуми кои се преклопуваат за ист Listing. Доколку новото (или изменетото) изнајмување се поклопува со постоечко, операцијата ќе биде одбиена со RAISE EXCEPTION.
     4{{{
     5CREATE OR REPLACE FUNCTION domify.f_lease_no_overlap()
     6RETURNS TRIGGER AS $$
     7DECLARE
     8  cnt INT;
     9BEGIN
     10  SELECT COUNT(*) INTO cnt
     11  FROM domify."lease"
     12  WHERE listing_id = NEW.listing_id
     13    AND id <> COALESCE(NEW.id, -1)
     14    AND daterange(start_date, end_date, '[]')
     15        && daterange(NEW.start_date, NEW.end_date, '[]');
     16  IF cnt > 0 THEN
     17     RAISE EXCEPTION
     18       'Listing % веќе има договор кој се преклопува со периодот %–%',
     19       NEW.listing_id, NEW.start_date, NEW.end_date;
     20  END IF;
     21  RETURN NEW;
     22END;
     23$$ LANGUAGE plpgsql;
     24
     25CREATE TRIGGER t_lease_no_overlap
     26BEFORE INSERT OR UPDATE ON domify."lease"
     27FOR EACH ROW
     28EXECUTE FUNCTION domify.f_lease_no_overlap();
     29
     30}}}