0

テーブル PENDING にトリガーを作成しました。保留中のテーブルには、uniqueId、duration、および maxDuration の 3 つの列があります。2つの列を持つ別のテーブルCOUNTがあります-req_id、total

これが私のトリガーです--

CREATE TRIGGER plus3second BEFORE INSERT
ON PENDING
FOR EACH ROW
BEGIN
DECLARE req_id varchar(25);
DECLARE total int(11);
DECLARE duration int(2);

SET req_id = SUBSTR(new.uniqueId, 1, 14);

Select total into total from COUNT where req_id = 'req_id';

IF total > 100 THEN

 SET duration = new.duration + 3;

  IF duration < new.maxDuration Then
     SET new.duration = duration;
  END IF;


END IF;


END

トリガーが正常に作成されました。これらのクエリを COUNT と PENDING で起動しました-

insert into COUNT values ('77711422099653',200);
insert into PENDING (uniqueId, duration, maxDuration) values ('77711422099653919893277163', 3, 20);

しかし、トリガーが機能しません...どこに問題がありますか?

4

1 に答える 1

0

このトリガー定義を確認してください(名前の競合が少ない):

CREATE TRIGGER plus3second
   BEFORE INSERT
   ON PENDING
   FOR EACH ROW
BEGIN
   DECLARE tReqID     varchar(25);
   DECLARE tTotal      int(11);
   DECLARE tDuration   int(2);

   SET tReqID = SUBSTR(new.uniqueId, 1, 14);

   SELECT total
     INTO tTotal
     FROM COUNT
    WHERE req_id = tReqID;

   IF tTotal > 100
   THEN
      SET tDuration = new.duration + 3;

      IF tDuration < new.maxDuration
      THEN
         SET new.duration = tDuration;
      END IF;
   END IF;
END
于 2013-05-24T15:10:58.133 に答える