- monthly_worker_status 조회 시 GROUP BY로 중복 데이터 합산 - 작업보고서 삭제 권한을 그룹장 이상으로 제한 (admin, system, group_leader) - 중복 데이터 정리를 위한 마이그레이션 SQL 추가 (009_fix_duplicate_monthly_status.sql) - synology_deployment 버전에도 동일 수정 적용
37 lines
1.0 KiB
SQL
37 lines
1.0 KiB
SQL
-- 008_create_update_triggers.sql
|
|
-- 작업보고서 변경 시 월별 집계 자동 업데이트 트리거
|
|
|
|
DELIMITER $$
|
|
|
|
-- 작업보고서 INSERT 트리거
|
|
CREATE OR REPLACE TRIGGER tr_daily_work_reports_insert
|
|
AFTER INSERT ON daily_work_reports
|
|
FOR EACH ROW
|
|
BEGIN
|
|
CALL UpdateMonthlyWorkerStatus(NEW.report_date, NEW.worker_id);
|
|
END$$
|
|
|
|
-- 작업보고서 UPDATE 트리거
|
|
CREATE OR REPLACE TRIGGER tr_daily_work_reports_update
|
|
AFTER UPDATE ON daily_work_reports
|
|
FOR EACH ROW
|
|
BEGIN
|
|
-- 기존 날짜 업데이트
|
|
CALL UpdateMonthlyWorkerStatus(OLD.report_date, OLD.worker_id);
|
|
|
|
-- 새 날짜가 다르면 새 날짜도 업데이트
|
|
IF OLD.report_date != NEW.report_date OR OLD.worker_id != NEW.worker_id THEN
|
|
CALL UpdateMonthlyWorkerStatus(NEW.report_date, NEW.worker_id);
|
|
END IF;
|
|
END$$
|
|
|
|
-- 작업보고서 DELETE 트리거
|
|
CREATE OR REPLACE TRIGGER tr_daily_work_reports_delete
|
|
AFTER DELETE ON daily_work_reports
|
|
FOR EACH ROW
|
|
BEGIN
|
|
CALL UpdateMonthlyWorkerStatus(OLD.report_date, OLD.worker_id);
|
|
END$$
|
|
|
|
DELIMITER ;
|