Mysql

如何覆蓋 MySQL DELETE 命令來更新欄位而不是刪除行?

  • November 16, 2020

我想知道是否可以覆蓋 MySQLDELETE命令的功能來更新所選行上的欄位,而不是完全刪除它。

這樣就可以在不使用. 的情況下設置標誌,例如deletedfrom 0/ nullto 。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 表示未處理的使用者定義異常

引用自:https://dba.stackexchange.com/questions/159670