3
我知道在刪除觸發器中沒有「NEW」值,所以不確定這是否可能。我試圖使用刪除觸發器之前記錄一些值,這工作正常,但我也想阻止刪除任何記錄,如果用戶沒有在where子句中指定任何東西。基本上,我不希望他們擦掉整張桌子。 (附代碼錯誤實際上是應用程序開發者)Mysql刪除前觸發器,防止刪除如果沒有where子句?
目前我有:
delimiter $$
create trigger tg_order_shipping_bd
before delete on order_shipping
FOR EACH ROW
begin
insert into order_shipping_log
(log_type, inv_nbr, old_tracking_nbr)
values ('DEL', OLD.inv_nbr, OLD.tracking_nbr);
end
$$
那麼,有一個聰明的方法來計算受影響的行,如果大於1,防止刪除和錯誤?也許只是重新思考我們如何處理這個問題更好。感謝您的任何建議。
非常好!我不知道那個!我會考慮到這一點。是的,它不可能發生,我們總是小心謹慎,但如果不檢查變量,不會在不知不覺中搞砸。我通常會將記錄標記爲已刪除並使用視圖或sproc,或者首先在重要表格上檢查值。在這種情況下還可以工作的是更新爲NULL,而不是在代碼中刪除。儘管使用安全更新,這是一個很酷的主意!非常感謝您的意見! – gregthegeek
此外,關於意外刪除的主題,這裏有一個免費提示...如果您啓用了二進制日誌記錄並將'binlog_format'設置爲'row',那麼當刪除行時,二進制日誌實際上包含每個列中的所有列值刪除行。在緊急情況下,您可以解析「mysqlbinlog」的輸出並重建丟失的內容。根據存儲引擎和其他設置的不同,如果'binlog_format'設置爲'mixed',這也可能是真實的。 –
啊,太棒了!謝謝! – gregthegeek