2012-10-01 36 views
0

我使用MySQL,并试图创建,以防止特定记录被删除或更新表中的触发器的删除或更新,例如我有一个表demo防止记录形式正在通过使用MySQL触发

id username password 
1  dames  t312llok 
2  sauce  12ff1fff1 
3  hynes  5656166oo9 

我想,以防止记录:

id username password 
1  dames  t312llok 

从通过使用触发器

+0

你的问题很一般,你到目前为止试过了什么? – RedFilter

+0

http://stackoverflow.com/questions/5132356/how-to-reject-delete-statement-in-before-delete-triger-mysql – ethrbunny

回答

0

被删除或更新如果你是我们MySQL 5.5或更高版本,这很简单。

DELIMITER $$ 
DROP TRIGGER IF EXISTS demo_bd $$ 
CREATE TRIGGER demo_bd BEFORE DELETE ON demo FOR EACH ROW 
BEGIN 
    IF OLD.id = 1 THEN 
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'This magical user cannot be deleted'; 
    END IF; 
END $$ 
DELIMITER ; 

对于更新,它是完全相同的代码,只需稍作调整。

DELIMITER $$ 
DROP TRIGGER IF EXISTS demo_bu $$ 
CREATE TRIGGER demo_bu BEFORE UPDATE ON demo FOR EACH ROW 
BEGIN 
    IF OLD.id = 1 THEN 
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'This magical user cannot be updated'; 
    END IF; 
END $$ 
DELIMITER ; 

另外...不要在数据库中存储密码。