如果經過Approve過的單據,還可以隨意被修改,那不是很糟糕嗎!
如此的商業邏輯 Business Rule,應該由MySQL 來做就好,以輕鬆維持資料庫的完整性。
運用 MySQL的 Trigger 就可以輕鬆的做到。
方法是:在該表單的欄位裡面,增加一個 lock bit(1)的欄位。
然後,建立一個 Trigger BEFORE_UPDATE:
BEGIN
IF OLD.lock THEN
SET NEW = 'ERROR: 本單已經鎖定,無法更改。如欲更改,請先解除鎖定狀態。';
END IF;
END
BEFORE_DELETE:
BEGIN
IF OLD.lock THEN
SET NEW = 'ERROR: 本單已經鎖定,無法刪除。如欲刪除,請先解除鎖定狀態。';
END IF;
END
沒有留言:
張貼留言