Con*_*ney 6 mysql delete update
我想知道是否可以覆盖 MySQLDELETE
命令的功能来更新所选行上的字段而不是完全删除它。
这使得可以设置一个标志,例如deleted
from 0
/ 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';
Run Code Online (Sandbox Code Playgroud)
这将立即终止查询并防止删除。
当触发器在其主体中包含单个非复杂语句(如上面的语句)时,不需要 常规DELIMITER
语句和BEGIN
/块。END
SQLSTATE 45000 表示未处理的用户定义异常。
归档时间: |
|
查看次数: |
5757 次 |
最近记录: |