我有一個名爲customer
的表,其中有一個名爲name
的列和一個名爲first_name_start
的列。我想first_name_start
等於SUBSTRING(name, 1, 4)
。我將如何創建一個確保這種情況發生的觸發器?如何創建這個MySQL觸發器?
回答
DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON your_table
FOR EACH ROW
BEGIN
SET NEW.first_name_start = SUBSTRING(NEW.name, 1, 4);
END$$
CREATE TRIGGER trigger_name BEFORE UPDATE ON your_table
FOR EACH ROW
BEGIN
SET NEW.first_name_start = SUBSTRING(NEW.name, 1, 4);
END$$
DELIMITER ;
不幸的是,我沒有時間去測試它,它可能是完全錯誤的。
這個工作 - 我剛剛測試了一個幾乎完全相同的東西,它只處理插入,但是OP沒有指定插入/更新/一切。 – Erik 2011-04-28 13:41:29
@Erik:OP確實要求更新以便在評論中處理在他的問題上。 – 2011-04-28 13:46:27
如果你真的需要它作爲一個列,爲什麼不只是添加first_name_start
視圖呢?那麼您將不會存儲冗餘數據,但您可以像使用它一樣使用它。
這將是最合乎邏輯的事情,我希望我能做到,但它表現不佳。 – 2011-04-28 13:34:09
有趣。你有沒有測試你的子字符串列的解決方案(填充沒有觸發器當然),並發現它很快?如果是這樣,那麼MySQL不能使「最合理」的解決方案表現良好,這有點不幸。 – 2011-04-28 13:38:44
我只是做了我的查詢,並把一個'WHERE SUBSTRING(...',它是可笑的緩慢。 – 2011-04-28 13:42:56
- 1. 如何創建這種SQL觸發器?
- 2. 如何創建觸發器的MySQL 5.6
- 3. 如何爲mysql 5.5.44創建觸發器?
- 4. 如何在mysql中創建觸發器?
- 5. 創建觸發器Mysql
- 6. 創建MySQL觸發器
- 7. Mysql創建觸發器
- 8. 在mysql中創建一個觸發器
- 9. 如何創建觸發器?
- 10. 有什麼不對這個MySQL創建觸發器聲明
- 11. 如何在創建觸發器時解決這兩個錯誤?
- 12. MySQL觸發器創建定時器
- 13. MySQL:如何從觸發器內的值創建一個集合?
- 14. MySQL觸發器創建。我的觸發器有什麼問題?
- 15. 錯誤創建觸發器MYSQL PHPMyadmin
- 16. 通過PHP創建mysql觸發器?
- 17. 無法在mysql上創建觸發器
- 18. 不能在MySQL創建觸發器
- 19. 創建觸發器來在MySQL
- 20. Mysql使用觸發器創建表
- 21. 在mysql中創建觸發器
- 22. 語法觸發器創建Mysql
- 23. 的MySQL創建觸發器語法
- 24. 在Mysql中沒有創建觸發器
- 25. mysql創建觸發器語法錯誤
- 26. Mysql觸發器創建錯誤
- 27. 在MySQL觸發器中創建變量
- 28. MySQL爲選擇列創建觸發器
- 29. 爲MYSQL觸發器創建查詢
- 30. 錯誤的MySQL創建觸發器
你確定你需要做非規範化你的表嗎? – 2011-04-28 13:32:43
你想讓這個觸發器觸發什麼條件?僅在插入時更新名稱字段?我們需要更多信息。 – 2011-04-28 13:34:15
都插入並更新到'name'列。尼克,我確定。我希望我不必去規範化,但是我無法獲得我需要的其他性能。 (我檢查了) – 2011-04-28 13:36:03