1

如何创建一个触发器,该触发器根据插入的磁带数量自动创建特定的磁带 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

我真的不知道该怎么办,知道吗?

4

1 回答 1

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 ;
于 2013-01-18T07:25:53.943 回答