我試圖在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(*)會返回一個次要號碼。 –