3
好吧,我正在處理觸發器,它告訴我它(MySQL工作臺5.2)不能識別這個變量。
*錯誤代碼:1193未知的系統變量error_msg_3 *MySQL錯誤代碼:1193.未知的系統變量
我認爲這將是一個觸發器使用它正確,請大家幫我
CREATE TRIGGER controlla_MaxCARDINALITA_INSERT
BEFORE INSERT ON SENTIERO__HA__TAPPA
FOR EACH ROW
BEGIN
DECLARE max_cardinalita INTEGER;
DECLARE error_msg_3 CONDITION FOR SQLSTATE '99003';
SELECT COUNT(*) into max_cardinalita
FROM SENTIERO__HA__TAPPA
WHERE IDsentiero=NEW.IDsentiero;
IF max_cardinalita>=10 THEN
SIGNAL error_msg_3;
SET error_msg_3='INSERT: Il sentiero ha già il massimo numero di tappe consentito';
END IF;
END$$
編輯::
我試過了,看起來好像在工作
DECLARE msg VARCHAR(255);
set msg = concat('MyTriggerError: Trying to insert a negative value in trigger_test: ');
signal sqlstate '45000' set message_text = msg;
請參閱我的編輯,爲什麼該代碼有效?表中沒有45000,我認爲 – FrancescoN
@ Jimmy5nomana請再次參考關於['SIGNAL'](http://dev.mysql.com/doc/refman/5.5/en/signal。 html)條款。它清楚地提到:** SIGNAL是「返回」錯誤的方式。 SIGNAL向處理程序,應用程序的外部或客戶端提供錯誤信息。要表示一個通用的SQLSTATE值,請使用'45000',這意味着_unhandled用戶定義的異常_。** – hjpotter92
謝謝,最後一個問題:mysql不允許我爲同一個表使用多個觸發器來執行相同的事件和操作。 ..所以我聽說了功能和程序;他們是解決方案嗎?我想以最簡單的方式解決它,我很着急。謝謝 – FrancescoN