Version 1 (modified by 4 days ago) ( diff ) | ,
---|
Евалуација
Примери на индекси
Индекс врз колони што често се филтрираат: departure_date, return_date:
CREATE INDEX ind_flight_date_range ON flight(departure_date, return_date);
Пример - Овој индекс е корисен кога се филтрираат записи во табелата flights според колоната departure_date и return_date.
SELECT * FROM flights WHERE departure_date >= '2025-05-28' AND return_date< '2026-05-28';
Индекс за JOIN помеѓу Booking и Payment:
CREATE INDEX ind_payment_booking ON payment(bookingid);
Примери за тригери
- Проверка дали одреден item веќе е во Wishlist
CREATE OR REPLACE FUNCTION validate_wishlist_entry() RETURNS TRIGGER AS $$ BEGIN IF EXISTS ( SELECT 1 FROM Wishlist WHERE UserID = NEW.UserID AND TargetID = NEW.TargetID ) THEN RAISE EXCEPTION 'Item already exists in wishlist!'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER check_wishlist_entry BEFORE INSERT ON Wishlist FOR EACH ROW EXECUTE FUNCTION validate_wishlist_entry();
- Да се валидира нов корисник
CREATE OR REPLACE FUNCTION validate_new_user() RETURNS TRIGGER AS $$ BEGIN IF EXISTS (SELECT 1 FROM application_user WHERE Email = NEW.Email) THEN RAISE EXCEPTION 'Email already registered!'; END IF; IF LENGTH(NEW.Password) < 8 THEN RAISE EXCEPTION 'Password must be at least 8 characters long!'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql; CREATE TRIGGER check_new_user BEFORE INSERT ON application_user FOR EACH ROW EXECUTE FUNCTION validate_new_user();
- Превенција на креирање дупликат тикет за поддршка
CREATE OR REPLACE FUNCTION prevent_duplicate_ticket() RETURNS TRIGGER AS $$ BEGIN IF EXISTS ( SELECT 1 FROM SupportTicket WHERE UserID = NEW.UserID AND Description = NEW.Description AND Status IN ('OPEN', 'RESOLVED') ) THEN RAISE EXCEPTION 'A similar issue has already been reported!'; END IF; RETURN NEW; END; $$ LANGUAGE plpgsql;
Погледи
Views имаме креирано во фаза 2
Note:
See TracWiki
for help on using the wiki.