我有一個表,看起來像這樣:創建觸發器其表的更新後自動更新列
| idAvailability | SumRooms | AvailableRooms | AvailabilityRate |
一切都是int,除了AvailabilityRate是float。 我想創建一個觸發器,當更新AvailableRooms列時,也會因爲觸發器的存在而自動更新列的AvailabilityRate。
這是我迄今爲止所做的。
CREATE TRIGGER availability_BEFORE_UPDATE
BEFORE UPDATE ON availability
FOR EACH ROW
BEGIN
update availability
set new.AvailabilityRate = new.AvailableRooms/new.SumRooms;
END
但它拋出我這個錯誤:
執行: UPDATE ergasia.availability SET AvailableRooms=15 WHERE idAvailability=1;
錯誤1442:1442:Can't update table availability in stored function/trigger because it is already used by statement which invoked this stored function/trigger. SQL Statement: UPDATE ergasia.availability SET AvailableRooms=15 WHERE idAvailability=1
20時06分36秒\t CREATE TRIGGER availability_BEFORE_UPDATE BEFORE UPDATE可用性FOR EACH ROW BEGIN設置new.AvailabilityRate = new.AvailableRooms/new.SumRooms;結束; \t錯誤代碼:1235.此版本的MySQL尚不支持'具有相同動作時間和一個表的事件的多個觸發器'\t 這是我嘗試創建它時顯示的內容。我用戶MySQL的工作臺 0.000秒 – Filippos
你有一些其他的觸發器與'更新前'這個表,因此你得到這個錯誤。你需要在一個觸發器中調整所有內容並刪除其他內容。 –
嗯,是的,你是對的!我忘了刪除舊的觸發器!所以,再次感謝! @Abhik Chakraborty – Filippos