2011-02-16 66 views
1

我有两个表A和B.如果我删除表A中的一个条目,我想使用用户ID更新表B中条目的状态。我使用此代码:如何创建删除触发器php myadmin

CREATE TRIGGER blockuserundo BEFORE DELETE ON user_blocked 
FOR EACH ROW BEGIN 
UPDATE members SET ty_status = '1' WHERE user_id = OLD.block_user_id ; 
END; 

它显示了一个错误,如:

在不触发新行删除

请指导我写了上述情况下,查询。

回答

2

您需要设置分隔符其他然后;

DELIMITER | 
CREATE TRIGGER blockuserundo BEFORE DELETE ON user_blocked 
FOR EACH ROW BEGIN 
UPDATE members SET ty_status = '1' WHERE user_id = OLD.block_user_id ; 
END; 
| 
DELIMITER ; 

代码下面按预期工作的东西:

DROP TABLE IF EXISTS user_blocked; 
CREATE TABLE user_blocked 
(
    block_user_id INT 
); 
DROP TABLE IF EXISTS members; 
CREATE TABLE members 
(
    user_id INT, 
    ty_status CHAR(1) 
); 

INSERT user_blocked 
VALUES (1),(2),(3),(4),(5); 

INSERT members 
VALUES (1, '0'),(2, '0'),(3, '0'),(8, '0'),(9, '1'); 

DELIMITER | 
CREATE TRIGGER blockuserundo BEFORE DELETE ON user_blocked 
FOR EACH ROW BEGIN 
UPDATE members SET ty_status = '1' WHERE user_id = OLD.block_user_id ; 
END; 
| 
DELIMITER ; 

SELECT * FROM members; 

DELETE FROM user_blocked WHERE block_user_id IN(1,2); 
SELECT * FROM members;