2012-10-01 60 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 ; 

另外...不要在數據庫中存儲密碼。