Changes between Version 5 and Version 6 of DatabaseProgramming
- Timestamp:
- 05/23/26 20:43:39 (2 days ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
DatabaseProgramming
v5 v6 53 53 }}} 54 54 55 **Процедура за отпуштање/завршување на договор на возач во компанија** 56 57 Процедурата прави две проверки. Првата проверка ја пребарува табелата Driver за id-то на возачот, доколку истото не постои се фрла соодветен исклучок. Потоа се проверува дали постои соодветен запис во табелата EmploymentHistory кој потврдува дека возачот е тековно вработен во компанијата. На крај се променува записот од табелата EmploymentHistory на тој начин што се става краен датум. 58 55 59 {{{ 56 60 create or replace procedure fire_driver(id_employee int, id_company int) … … 83 87 }}} 84 88 89 **Процедура за отпуштање/завршување на договор на диспечер во компанија** 90 91 Процедурата прави две проверки. Првата проверка ја пребарува табелата Dispatcher за id-то на диспечарот, доколку истото не постои се фрла соодветен исклучок. Потоа се проверува дали постои соодветен запис во табелата EmploymentHistory кој потврдува дека деспечерот е тековно вработен во компанијата. На крај се променува записот од табелата EmploymentHistory на тој начин што се става краен датум. 85 92 86 93 {{{ … … 114 121 }}} 115 122 116 **Процедура за пишување на оценка** 123 **Процедура за пишување на оцена** 124 125 Оваа процедурата се повикува кога корисник испраќа свој коментар и рејтинг за возењето откако ќе пристигне на дестинацијата. 117 126 118 127 {{{ … … 144 153 **Процедура за поднесување пријава** 145 154 146 Оваа процедура се повикува кога корисниците сакаат да поднесат пријава за време на возењето. Тоа може да биде некоја поплака забрзо возење или скршнување од патот.155 Оваа процедура се повикува кога корисниците поднесуваат пријава за време на возењето. Тоа може да биде некоја поплака од типот брзо возење или скршнување од патот. 147 156 148 157 {{{ … … 155 164 end; 156 165 $$; 157 {{{ 166 }}} 158 167 159 168 == Функции и тригери 160 169 170 **Тригер и функција за проверка на единствена оценка** 171 172 Секој корисник смее да остави максимум една оценка за секое возење. Функцијата враќа тригер кој доколку во табелата Review постои оценка од корисникот за тоа возење фрла соодветен исклучот. Тригерот се извршува пред внес на запис во табелата Review. 173 174 {{{ 175 create or replace function check_one_review() 176 returns trigger 177 language plpgsql 178 as $$ 179 begin 180 if 0 < (select count(*) 181 from review 182 where ride_id=new.ride_id and customer_user_id=new.customer_user_id) 183 then 184 raise exception 'There is already a review from the same customer for this ride'; 185 end if; 186 return new; 187 end; 188 $$; 189 create or replace trigger check_valid_review 190 before insert on review 191 for each row 192 execute function check_one_review(); 193 }}} 194 195 **Тригер и функција за проверка на бројот на слободни седишта** 196 197 Секој корисник при испраќање на барање за превоз напоменува колку патници ќе има (деца, воздрасни и бебиња). Функцијата check_available_seats проверува дали во возилото кое се нуди во понудата има доволно седишта. Функцијата враќа тригер кои се извршува пред внес или промена на запис во табелата Offer. 198 199 {{{ 200 create or replace function check_available_seats() 201 returns trigger 202 language plpgsql 203 as $$ 204 begin 205 if (select v.passenger_capacity 206 from vehicle v 207 inner join driver_vehicle dv on v.vin=dv.vin_vehicle 208 where dv.id_driver=new.driver_user_id)<(select r.number_of_children+r.number_of_adult_passengers+r.baby_seat_count 209 from request r 210 inner join offer o on r.id=o.request_id 211 where o.id=new.id) 212 then 213 raise exception 'Not enough seats in the vehicle'; 214 end if; 215 return new; 216 end; 217 $$; 218 create or replace trigger check_valid_seats 219 before insert or update on offer 220 for each row 221 execute function check_available_seats(); 222 }}} 223
