好吧,我正在運行一個單一的主設備和一些奴隸的設置。所有寫入都通過主設備,並複製到嚴格用於讀取的從設備。MySQL觸發器和存儲過程複製
現在我有一個存儲過程(不是函數),它是由插入上的觸發器調用的。根據MySQL文檔,對於複製觸發器,將調用記錄到觸發器,而存儲過程實際記錄存儲過程的結果。
所以我的問題是,當我的觸發器被觸發時,它是否會複製觸發器和觸發器調用的過程的結果(導致該過程有效地運行兩次)?或者它會簡單地複製觸發器,讓奴隸自己重新運行存儲過程?
感謝
好吧,我正在運行一個單一的主設備和一些奴隸的設置。所有寫入都通過主設備,並複製到嚴格用於讀取的從設備。MySQL觸發器和存儲過程複製
現在我有一個存儲過程(不是函數),它是由插入上的觸發器調用的。根據MySQL文檔,對於複製觸發器,將調用記錄到觸發器,而存儲過程實際記錄存儲過程的結果。
所以我的問題是,當我的觸發器被觸發時,它是否會複製觸發器和觸發器調用的過程的結果(導致該過程有效地運行兩次)?或者它會簡單地複製觸發器,讓奴隸自己重新運行存儲過程?
感謝
在MySQL 5.0(和MySQL 5.1與基於二進制日誌聲明),只調用查詢記錄,所以在你的情況下,INSERT將被記錄。
在從站上,INSERT將被執行,然後觸發器將在從站上重新運行。因此,觸發器需要存在於從屬設備上,並假設它已經存在,那麼它將以與主設備完全相同的方式執行。
在MySQL 5.1中,有基於行的二進制日誌記錄,它只記錄被更改的行,因此觸發器不會在從屬系統上重新啓動,但所有更改的行仍會傳播。
除了哈里森的出色答卷: