我有一個使用BEFORE INSERT ON table
的MySQL觸發器,它可以計算一個值並在用戶在特定列中插入值後更新同一個表。這按預期工作。但是用戶在輸入時出錯並修復了錯誤,我想編寫一個觸發器,在修復錯誤後更新計算的值。有沒有辦法做到這一點?在同一個表上更新後的MySQL觸發器
回答
A BEFORE UPDATE ON table
觸發器可以訪問行中現有的值以及新提供的值,並且可以根據所需的任何條件和表達式來設置表中任何列的值。
例如,可以測試一個或多個關注列的值是否已被修改,然後將其他列設置爲某個表達式。
CREATE TRIGGER my_before_update_trigger
BEFORE UPDATE ON my_table
FOR EACH ROW
BEGIN
IF NOT ((NEW.col1 <=> OLD.col1) AND (NEW.col2 <=> OLD.col2)) THEN
SET NEW.col3 = NEW.col1 * NEW.col2 ;
END IF;
END$$
謝謝你,下面你的例子,我做錯了什麼?它抱怨語法錯誤! 'CREATE TRIGGER my_before_update_trigger BEFORE UPDATE ON TmapSlideData FOR EACH ROW BEGIN IF NOT((NEW.MappedReads <=> OLD.MappedReads)AND(NEW.FOV <=> OLD.FOV)) SET NEW.MappedReadsPerFOV = NEW.MappedReads/NEW.FOV; END IF; END $$' – UNagaswamy 2013-03-14 16:55:53
我的例子是缺少'THEN'關鍵字。而'$$'是一個樣本分隔符,您需要一個匹配的(前面的)'DELIMITER $$'語句。而且您可能需要考慮觸發器命名約定,該約定包含觸發器名稱中表的名稱。 (這不是MySQL的要求,但它可以在大型模式中使用,包含大量表格和大量觸發器。)另一個需要考慮的事情是,是否確實需要存儲派生列。該值可以通過在查詢的SELECT列表中包含相關表達式來返回。 – spencer7593 2013-03-14 17:50:57
非常感謝,工作! – UNagaswamy 2013-03-14 19:49:05
- 1. 更新觸發器上的Mysql更新
- 2. MySQL使用前觸發器更新同一個表
- 3. MySQL更新觸發器在同一張桌上
- 4. MySQL的:寫觸發表列和更新相同,另一個表
- 5. 在更新MySQL後觸發SOLR更新
- 6. SQL Server後更新觸發器更新另一個表
- 7. 更新另一張表後觸發器更新一張表
- 8. MySQL觸發器根據另一個表上的更改更新表格
- 9. 更新觸發器上的MySql。 DELIMITER
- 10. MYSQL後觸發器更新如果
- 11. MySQL觸發器 - 更新後刪除
- 12. 觸發器更新另一個表
- 13. MySQL的觸發器來更新另一個表
- 14. 從INSERT觸發器更新時觸發更新後未觸發
- 15. 更改表命令後更新觸發器MYSQL
- 16. mysql更新觸發器
- 17. 運行MYSQL觸發器,不更新表
- 18. MySQL觸發器不更新表
- 19. MySQL觸發器未更新表
- 20. Oracle觸發器更新同一個表中的列值
- 21. 在單列上更新後的表觸發器
- 22. mysql觸發器在更新我的表中有一些問題
- 23. 創建一個觸發器,用於在同一表中的不同列更新時更新表中的列 - SQL
- 24. 如何觸發一個表並更新同一個表?
- 25. 更新mysql中觸發器中的同一行
- 26. 兩個方向更新後的mysql觸發器
- 27. 如何在mysql中的表中插入數據後觸發一個觸發器
- 28. 在同一個表中的mysql觸發器
- 29. MySQL之後更新觸發器更新所有
- 30. 在postgresql更新觸發器後更新從一個表格到另一個表格的值
TRIGGER AFTER UPDATE? – 2013-03-14 16:16:13
添加BEFORE或AFTER UPDATE觸發器。 – Tom 2013-03-14 16:17:37