2

@ShaharshShahのコードは次のとおりです。

DELIMITER $$

DROP TRIGGER /*!50032 IF EXISTS */ trig_auto_spid$$

CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `trig_auto_spid` AFTER INSERT ON `tapes` 
FOR EACH ROW BEGIN
    SELECT REPLACE(TSpecID, 'TS', '') INTO @counter 
    FROM Tape_Specific_ID 
    ORDER BY TSpecID DESC LIMIT 1;

    SET loopCnt = @counter + new.qty; 
    WHILE (@counter <= loopCnt) DO 
        INSERT INTO Tape_Specific_ID(TapesID, TSpecID) 
        VALUES (new.TapesID, CONCAT('TS', @counter)); 
        SET @counter:=@counter + 1;
    END WHILE; 
END;
$$

DELIMITER ;

このトリガーを作成するときにエラーが発生しましたエラー1193(HY00):不明なシステム変数'loopCnt'、なぜですか?何か助けがありますか?

4

2 に答える 2

2

それを作るuser variable

SET @loopCnt := @counter + new.qty; 
WHILE (@counter <= @loopCnt) DO 

更新1

SET @counter := 10;
SET @loopCnt := @counter + new.qty; 
WHILE (@counter <= @loopCnt) DO 
于 2013-01-18T09:37:00.523 に答える
1

で試してみてください

SET @loopCnt = @counter + new.qty; 
WHILE (@counter <= @loopCnt) DO 

ユーザー定義変数@は前に置く必要があります。そうでない場合は、システムからの変数であると見なされ、どこにも定義されていません。

于 2013-01-18T09:36:42.497 に答える