如何根据插入的磁带数量创建自动创建特定磁带ID的触发器。触发器名称应为trig_auto_spid
这意味着在表tapes
中,BatDog
有QTy=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
我真的不知道该怎么做,有什么想法吗?
答案 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 ;