251217:1704 Docunment Number: Update to 1.6.2
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled

This commit is contained in:
admin
2025-12-17 17:04:06 +07:00
parent 48ed74a27b
commit aaa5da3ec1
121 changed files with 8072 additions and 2103 deletions

47
docs/SQL/triggers.sql Normal file
View File

@@ -0,0 +1,47 @@
-- trigger
DROP TRIGGER IF EXISTS trg_rfa_revisions_is_current;
DROP TRIGGER IF EXISTS trg_rfa_revisions_is_current_upd;
DROP TRIGGER IF EXISTS trg_rfa_revisions_auto_reset;
-- ============================================================
-- ⚙️ TRIGGERS
-- ============================================================
-- ป้องกันไม่ให้มี revision ที่ is_current=TRUE ซ้ำใน rfa_id เดียวกัน
DELIMITER $$
CREATE TRIGGER trg_rfa_revisions_is_current
BEFORE INSERT ON rfa_revisions
FOR EACH ROW
BEGIN
IF NEW.is_current = TRUE THEN
IF (SELECT COUNT(*) FROM rfa_revisions WHERE rfa_id = NEW.rfa_id AND is_current = TRUE) > 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot insert more than one current revision per RFA.';
END IF;
END IF;
END$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER trg_rfa_revisions_is_current_upd
BEFORE UPDATE ON rfa_revisions
FOR EACH ROW
BEGIN
IF NEW.is_current = TRUE AND (OLD.is_current IS NULL OR OLD.is_current = FALSE) THEN
IF (SELECT COUNT(*) FROM rfa_revisions WHERE rfa_id = NEW.rfa_id AND is_current = TRUE AND correspondences_id <> OLD.correspondences_id) > 0 THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot set more than one current revision per RFA.';
END IF;
END IF;
END$$
DELIMITER ;
-- ทำให้เวลาสร้าง revision ใหม่ที่ is_current=TRUE ระบบจะ set revision เดิมเป็น FALSE อัตโนมัติ
DELIMITER $$
CREATE TRIGGER trg_rfa_revisions_auto_reset
BEFORE INSERT ON rfa_revisions
FOR EACH ROW
BEGIN
IF NEW.is_current = TRUE THEN
UPDATE rfa_revisions
SET is_current = FALSE
WHERE rfa_id = NEW.rfa_id;
END IF;
END$$
DELIMITER ;