1

挿入されたテープの数に基づいて特定のテープ ID を自動的に作成するトリガーを作成する方法。トリガー名はtrig_auto_spid.
これは、テーブルtapesではBatDog、テーブルでQTy=3そうであることを意味しますTape_Spec_Id TapesId T1=TS1, TS2, TS3...
私はあなたに自分自身を明確にしたことを願っています...

フローは次のとおりです。

表:テープ 数量:3

で同等

表:Tape_Spec_ID

TSpecID TS1、TS2、TS3...

ここに私の2つのテーブルがあります:

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 に答える