Mysql
如何覆蓋 MySQL DELETE 命令來更新欄位而不是刪除行?
我想知道是否可以覆蓋 MySQL
DELETE
命令的功能來更新所選行上的欄位,而不是完全刪除它。這樣就可以在不使用. 的情況下設置標誌,例如
deleted
from0
/null
to 。1``UPDATE
有可能嗎,如果可以,怎麼做?
不,這是不可能的。您可以使用觸發器或(在適當的情況下)外鍵約束來阻止刪除,但除了刪除之外,您不能
DELETE
做任何事情。它在語義上並不正確——您正在更新一行,而不是刪除一行。
DELETE
表示刪除 0 行或更多行。如果您真的想使用“刪除”一詞,請創建一個具有適當名稱的儲存過程,該名稱接受主鍵作為其參數。
要完全防止刪除,請使用這樣的簡單觸發器:
CREATE TRIGGER t1_bd BEFORE DELETE ON t1 -- table name FOR EACH ROW SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'table t1 does not support deletion';
這將立即終止查詢並防止刪除。
當觸發器在其主體中包含單個非複雜語句時,不需要 正常
DELIMITER
語句和BEGIN
/塊,如上面的語句。END
SQLSTATE 45000 表示未處理的使用者定義異常。