【问题标题】:Is it possible to Disable deletes on a table on MYSQL?是否可以在 MYSQL 上的表上禁用删除?
【发布时间】:2018-11-30 19:02:34
【问题描述】:

我正在使用 MySQL 5.0,我想知道是否有一种方法可以禁用对表的删除。例如,不允许任何用户从平板电脑中删除任何内容,只能更新和插入。

【问题讨论】:

标签: php mysql sql-delete


【解决方案1】:

下面是一个触发器示例:

DELIMITER $$

CREATE TRIGGER tr_table1_del BEFORE DELETE ON table1 FOR EACH ROW
BEGIN
  SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'DELETE cancelled'; 
END $$

DELIMITER ;

【讨论】:

  • 这个想法不错
【解决方案2】:

是的,请参阅 MySQL 手册for the GRANT syntax

这是您想要的示例:

GRANT SELECT, INSERT ON mydb.mytbl TO 'someuser'@'somehost';

仅将SELECTINSERT 特权授予指定表上的特定用户/主机。

【讨论】:

    【解决方案3】:

    您可以按照其他人的建议使用grant。或者您可以创建引发错误的BEFORE DELETE 触发器,因此没有人可以针对您的表发出delete(请记住,仍然可以TRUNCATE TABLE

    【讨论】:

    • 触发器很酷。虽然对于一些简单的事情,比如权限限制,这可能会导致 WTF delta 增加。
    【解决方案4】:

    在您的表上设置权限可以让您禁用删除操作。您使用GRANT 设置权限。

    【讨论】:

      猜你喜欢
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-20
      • 2020-06-11
      • 1970-01-01
      相关资源
      最近更新 更多