| | 119 | |
| | 120 | BEFORE INSERT тригер во course_version, каде само таа верзија што се креира е active, останатите не се. Дополнително се ажурираат и уште некои атрибути. |
| | 121 | {{{ |
| | 122 | CREATE OR REPLACE FUNCTION ensure_single_active_version_when_created() |
| | 123 | RETURNS TRIGGER |
| | 124 | AS $$ |
| | 125 | DECLARE |
| | 126 | v_num_new_version INTEGER; |
| | 127 | BEGIN |
| | 128 | UPDATE course_version |
| | 129 | SET active = FALSE |
| | 130 | WHERE course_id = NEW.course_id; |
| | 131 | |
| | 132 | SELECT COALESCE(MAX(version_number), 0) + 1 INTO v_num_new_version |
| | 133 | FROM course_version |
| | 134 | WHERE course_id = NEW.course_id; |
| | 135 | |
| | 136 | NEW.active := TRUE; |
| | 137 | NEW.creation_date := CURRENT_DATE; |
| | 138 | NEW.version_number := v_num_new_version; |
| | 139 | |
| | 140 | RETURN NEW; |
| | 141 | END; |
| | 142 | $$ |
| | 143 | LANGUAGE plpgsql; |
| | 144 | |
| | 145 | CREATE TRIGGER trg_ensure_single_active_version_when_created |
| | 146 | BEFORE INSERT ON course_version |
| | 147 | FOR EACH ROW |
| | 148 | EXECUTE FUNCTION ensure_single_active_version_when_created(); |
| | 149 | }}} |