有没有办法在没有自动增量列的情况下访问表中最后插入的行?

时间:2016-12-05 00:24:31

标签: mysql triggers

我正在使用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是它的原因,但不知道如何解决这个问题。如果你对如何解决它有所了解,将会有很大的帮助。

提前感谢您的时间。

1 个答案:

答案 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 ;