Mysql 从非自动增量主键的触发器中的表中获取上次输入的插入值

Mysql 从非自动增量主键的触发器中的表中获取上次输入的插入值,mysql,Mysql,我对mysql数据库非常陌生,我的疑问是我已经编写了一个触发器 如下所述 我想要的是,每当我用followerId和followerId向followers表中插入一行时,我希望这些相同的Id分别插入到通知表userId和notifierId中,但在搜索了很多之后,我能找到的只是最后一个插入Id,这在我的情况下不适用,因为我的主键是非增量的 是否有任何方法可以获取followersTable中上次输入或上次更新的元组的followersId和FollowerId的值 我的触发器定义 表说明 通知

我对mysql数据库非常陌生,我的疑问是我已经编写了一个触发器 如下所述

我想要的是,每当我用followerId和followerId向followers表中插入一行时,我希望这些相同的Id分别插入到通知表userId和notifierId中,但在搜索了很多之后,我能找到的只是最后一个插入Id,这在我的情况下不适用,因为我的主键是非增量的

是否有任何方法可以获取followersTable中上次输入或上次更新的元组的followersId和FollowerId的值

我的触发器定义

表说明

通知表说明


我确实找到了解决问题的办法。使用触发器并不更好,因为在处理两个表时,一个条目可能会进入一个表,而另一个条目可能不会进入。所以最好的方法是将事务与存储过程一起使用

解决方案

drop trigger if exists `followNotifyTrigger` ;

delimiter $$
CREATE trigger  followNotifyTrigger 


after insert on followers
for each row 
Begin
declare newUserId int(11);
declare newNotifiersId int(11);

select new.followersId ,New.followingId 
into newUserId , newNotifiersId 
from followers 
where followersId = LAST_INSERT_ID ;

insert into  Notification(typeId,userId,notifiersId,time) values   (1,newUserId,newNotifiersId,NOW());
END $$
DELIMITER ; //
followersId int(11) NO  PRI     
followingId int(11) NO  PRI     
response    bit(1)  NO      b'0'    
notificationId  int(11) NO  PRI     auto_increment
typeId  int(11) YES MUL     
userId  int(11) YES MUL     
notifiersId int(11) YES         
time    datetime    YES 
USE `dbname`;
DROP PROCEDURE IF EXISTS `followNotifyUser`;



DELIMITER $$
USE `dbname` $$

CREATE PROCEDURE followNotifyUser(IN followersId int(11),
IN followingId int(11),
IN response bit,
OUT message varchar(255))
LANGUAGE SQL
DETERMINISTIC
COMMENT 'Adds "nson" to first and last names in the record.'
BEGIN

DECLARE EXIT HANDLER FOR sqlexception
    BEGIN
    SET message = "mysql exception";
    ROLLBACK ;

    END;

DECLARE EXIT HANDLER FOR sqlwarning
    BEGIN 
        SET message = "mysql warnnings";
    ROLLBACK;
    END;

START TRANSACTION;
INSERT INTO followers(followersId,followingId,response) VALUES (followersId,followingId,response);
INSERT INTO Notification(typeId,userId,notifiersId,time)VALUES(1,followersId,followingId,NOW());
COMMIT;  
END $$