Changes between Version 2 and Version 3 of AdvancedDatabaseDevelopment


Ignore:
Timestamp:
08/23/26 20:25:38 (4 days ago)
Author:
231118
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • AdvancedDatabaseDevelopment

    v2 v3  
    7878FOR EACH ROW
    7979EXECUTE FUNCTION create_ram_alert();
     80}}}
     81
     82Тригер за автоматско предупредување при висока искористеност на дискот (> 90%):
     83
     84{{{
     85CREATE OR REPLACE FUNCTION create_disk_alert()
     86RETURNS TRIGGER AS
     87$$
     88BEGIN
     89  IF NEW.disk_usage > 90 THEN
     90    INSERT INTO security_alerts(
     91      computer_id, alert_type, severity, description, timestamp, resolved
     92    )
     93    VALUES (
     94      NEW.computer_id, 'High Disk Usage', 'MEDIUM',
     95      'Disk usage exceeded 90%', NOW(), false
     96    );
     97  END IF;
     98  RETURN NEW;
     99END;
     100$$ LANGUAGE plpgsql;
     101
     102DROP TRIGGER IF EXISTS disk_alert_trigger ON computer_history;
     103CREATE TRIGGER disk_alert_trigger
     104AFTER INSERT ON computer_history
     105FOR EACH ROW
     106EXECUTE FUNCTION create_disk_alert();
     107}}}
     108
     109Тригер (BEFORE UPDATE) кој автоматски го ажурира `updated_at` во `env_settings`
     110при секоја промена на поставките:
     111
     112{{{
     113CREATE OR REPLACE FUNCTION set_env_settings_updated_at()
     114RETURNS TRIGGER AS
     115$$
     116BEGIN
     117  NEW.updated_at := NOW();
     118  RETURN NEW;
     119END;
     120$$ LANGUAGE plpgsql;
     121
     122DROP TRIGGER IF EXISTS env_settings_updated_trigger ON env_settings;
     123CREATE TRIGGER env_settings_updated_trigger
     124BEFORE UPDATE ON env_settings
     125FOR EACH ROW
     126EXECUTE FUNCTION set_env_settings_updated_at();
     127}}}
     128
     129Тригер (напреден) кој при нова проверка на достапност со недостапен сервис
     130(`service_availability.is_available = false`) автоматски генерира безбедносен
     131аларм, поврзувајќи го сервисот со неговиот компјутер:
     132
     133{{{
     134CREATE OR REPLACE FUNCTION create_service_down_alert()
     135RETURNS TRIGGER AS
     136$$
     137DECLARE
     138  v_computer_id INTEGER;
     139  v_service     TEXT;
     140BEGIN
     141  IF NEW.is_available = false THEN
     142    SELECT computer_id, service_name
     143      INTO v_computer_id, v_service
     144      FROM network_services
     145     WHERE id = NEW.service_id;
     146
     147    INSERT INTO security_alerts(
     148      computer_id, alert_type, severity, description, timestamp, resolved
     149    )
     150    VALUES (
     151      v_computer_id, 'Service Unavailable', 'MEDIUM',
     152      'Network service ' || COALESCE(v_service, '?') || ' is unavailable',
     153      NOW(), false
     154    );
     155  END IF;
     156  RETURN NEW;
     157END;
     158$$ LANGUAGE plpgsql;
     159
     160DROP TRIGGER IF EXISTS service_down_trigger ON service_availability;
     161CREATE TRIGGER service_down_trigger
     162AFTER INSERT ON service_availability
     163FOR EACH ROW
     164EXECUTE FUNCTION create_service_down_alert();
     165}}}
     166
     167Тригер кој при нов перформансен запис го освежува `last_seen` на компјутерот
     168(машината се смета за активна штом испраќа податоци):
     169
     170{{{
     171CREATE OR REPLACE FUNCTION touch_computer_last_seen()
     172RETURNS TRIGGER AS
     173$$
     174BEGIN
     175  UPDATE computers
     176     SET last_seen = COALESCE(NEW.timestamp, NOW())
     177   WHERE id = NEW.computer_id;
     178  RETURN NEW;
     179END;
     180$$ LANGUAGE plpgsql;
     181
     182DROP TRIGGER IF EXISTS touch_last_seen_trigger ON computer_history;
     183CREATE TRIGGER touch_last_seen_trigger
     184AFTER INSERT ON computer_history
     185FOR EACH ROW
     186EXECUTE FUNCTION touch_computer_last_seen();
    80187}}}
    81188