如何在mysql中创建触发器?

时间:2013-01-18 06:28:34

标签: mysql sql triggers insert

如何根据插入的磁带数量创建自动创建特定磁带ID的触发器。触发器名称应为trig_auto_spid 这意味着在表tapes中,BatDogQTy=3,因此在表Tape_Spec_Id TapesId T1=TS1, TS2, TS3...中。 我希望我能清楚地告诉你......

这是流程:

  

表:磁带数量:3

相当于

  

表:Tape_Spec_ID

     

TSpecID TS1,TS2,TS3 ......

以下是我的两张表:

Tapes                                 
----------------------
TapesID   Title    Qty
T1      BatDog     3
T2      UnderCat   2
T3      IronMouse  1
T4      Boys Zone  1
T5      RoboCat    1


Tape_Specific_ID
----------------
TapesID TSpecID
     T1 TS1
     T1 TS2
     T1 TS3
     T2 TS4
     T2 TS5
     T3 TS6
     T4 TS7
     T5 TS8

我真的不知道该怎么做,有什么想法吗?

1 个答案:

答案 0 :(得分:2)

试试这个:

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 ;