我试图在delete
之前创建一个触发器,所以如果用户输入了错误的id
,他会收到一条错误消息。
我用下面的代码...删除SQL上的触发器之前。
CREATE TRIGGER pos_id
BEFORE DELETE ON CLIENTS
FOR EACH ROW
BEGIN
DECLARE TOTAL INT;
SET TOTAL = (SELECT COUNT(*) FROM CLIENTS) ;
IF(old.id <0 OR old.id > total)
THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error. Client doesn't exist';
END IF ;
END
此外,这是行不通的。该消息没有出现,并且触发似乎不起作用。当我正在寻找解决我在互联网上遇到的问题时,我学到了一些关于触发器的知识,而我发现这些触发器非常有趣。
但是当我尝试...
CREATE TRIGGER pos_id
INSTEAD OF DELETE ON CLIENTS
BEGIN
(...)
或...
CREATE TRIGGER pos_id
ON CLIENTS
INSTEAD OF DELETE
BEGIN
(...)
我得到一个syntax error
。所以我真的有两个问题:
1º为什么我之前删除触发器不起作用?我真的错过了什么吗?
2º与删除触发器相关的语法错误是什么?
非常感谢。
PhPMyAdmin。我意识到我犯了一个很大的错误,''IF(old.id <0 OR old.id> total)'',因为如果我删除了客户端,可能会有一个id = 4的客户端,但count(*)会返回一个次要号码。 –