防止删除数据库中的特定行

时间:2014-01-24 22:52:33

标签: mysql sql triggers

我有一个链接到数据库的网站。当用户登录时,他们可以删除称为类别的内容。该网站创建一个准备好的声明,并从数据库中删除此类别。

我希望能够阻止删除具有特定名称或ID的类别。这很简单,可以使用jquery进行检查,但我想通过在数据库中添加一个检查来添加另一层安全性。情侣问题......

触发器或程序?我以前从未使用过程序,而且从触发器的触发器经验来看,我不知道如何处理这个问题。假设可以使用触发器,我将如何删除该类别?然后我将如何阻止数据库中的那一行被删除?

首先,我有一个触发器的代码。

delimiter $$
    CREATE TRIGGER category_delete BEFORE DELETE ON categories
        FOR EACH ROW
            BEGIN

            END$$
delimiter ;

2 个答案:

答案 0 :(得分:6)

从触发器中抛出异常以中止删除:

delimiter $$
CREATE TRIGGER category_delete BEFORE DELETE ON categories
FOR EACH ROW
BEGIN
    IF old.id = 5 THEN -- use whatever condition you need
        SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'May not delete id 5';
    END IF;
END$$
delimiter ;

答案 1 :(得分:0)

只需添加一个触发器并绑定它。

使用数据库的强大功能来维护业务逻辑并使其保持一致和所需 - 尽管PHP,JQuery等正在投入其中。这是主要的业务断言