我正在使用AFTER INSERT触发器从一个数据库的表中检索最近更新的行的信息,并将其存储在另一个数据库的表中。但是,我不知道如何检索最后插入的行,因为该表具有复合键(ClubID,CourtID),并且它们都不是自动增量列。 这是我的触发器代码。
DELIMITER //
DROP TRIGGER if exists insert_court //
CREATE TRIGGER insert_court AFTER INSERT ON suchwow.Court
FOR EACH ROW
BEGIN
DECLARE ckey2 INT;
DECLARE ckey1 INT;
DECLARE ckey3 INT;
SELECT MAX(CourtKey) INTO @ckey2 from suchwow_analytical.Court;
SELECT NEW.CourtID,NEW.ClubID INTO @ckey1,@ckey3 from suchwow.Court;
INSERT INTO suchwow_analytical.Court(CourtKey,CourtID,FloorType,
HourlyRate, ClubID,Street,City,State,Zipcode)
SELECT @ckey2+1,@ckey1,FloorType,HourlyRate,@ckey3,Street
,City,State,Zipcode from suchwow.Court c,suchwow.Club cl where c.clubID=cl.ClubID
and CourtID=ckey1 and cl.ClubID=ckey3;
END //
DELIMITER ;
我收到#1172多行错误。我确信NEW.CourtID和NEW.ClubID是它的原因,但不知道如何解决这个问题。如果你对如何解决它有所了解,将会有很大的帮助。
提前感谢您的时间。
答案 0 :(得分:0)
删除@ ckey1,@ ckey3并直接使用new.ClubID和new.CourtID解决了我的问题。这是我的问题的解决方案。
DELIMITER //
DROP TRIGGER if exists insert_court //
CREATE TRIGGER insert_court AFTER INSERT ON suchwow.Court
FOR EACH ROW
BEGIN
DECLARE ckey2 INT;
SELECT MAX(CourtKey) INTO @ckey2 from suchwow_analytical.Court;
INSERT INTO suchwow_analytical.Court(CourtKey,CourtID,FloorType,HourlyRate,ClubID,
Street,City,State,Zipcode)
SELECT @ckey2+1,CourtID,FloorType,HourlyRate,c.ClubID,Street,City,State,Zipcode
from suchwow.Court c,suchwow.Club cl where c.clubID=cl.ClubID and
CourtID=new.CourtID and cl.ClubID=new.ClubID;
END //
DELIMITER ;