我正在寻找一些东西可以帮助我获得票证的id创建在第一行。
我知道我可以通过使用不同的准备好的查询来简化这一点,但我不想(试着看看这样做是否可行,是否不使用多查询方式)。
我知道mysql中的LAST_INSERT_ID(),但我有点担心同时插入几行....
在我的研究过程中,我也看到有人直接选择指定的ID,但这是一个很大的资源成本。
我也看到@@插入,我没有看到他们之间有很大的区别,所以我也有同样的问题...
代码:
CREATE PROCEDURE `Create_Ticket`(IN idU bigint(16),IN type VARCHAR(45),IN pseudo VARCHAR(45), IN lienacc VARCHAR(100), IN liengame VARCHAR(100), IN content VARCHAR(500))
BEGIN
INSERT INTO `dbOneT`.`Ticket` (`FaceitGame`,`Status`,`Ouverture` )
VALUES ( liengame , 0 , NOW());
INSERT INTO `dbOneT`.`Users_has_Ticket` (`Users_id`, `Ticket_id`)
VALUES ( idU, `Ticket`.`idTicket` );
INSERT INTO `dbOneT`.`Accuse` (`Pseudo`,`LienFaceit`)
VALUES (pseudo, lienacc);
INSERT INTO `dbOneT`.`Ticket_has_Accuse` (`Ticket_id_A`, `Accusé_id`)
VALUES (`Ticket`.`idTicket`, `Accuse`.`idAccuse`);
END
我运行的是MariaDB 10.3.27
“计算机”是raspberry pi OS(一个debian)上带有8GO RAM的raspberry pi 4B
谢谢你的帮助,祝你有个愉快的一天
汤姆
CREATE PROCEDURE `Create_Ticket`(IN idU bigint(16),IN type VARCHAR(45),IN pseudo VARCHAR(45), IN lienacc VARCHAR(100), IN liengame VARCHAR(100), IN content VARCHAR(500))
BEGIN
-- declare variables for inserted PK AI values
DECLARE _idTicket INT;
DECLARE _idAccuse INT;
INSERT INTO `dbOneT`.`Ticket` (`FaceitGame`,`Status`,`Ouverture` )
VALUES ( liengame , 0 , NOW());
-- save assignerd AI value to the variable
SET _idTicket := LAST_INSERT_ID();
INSERT INTO `dbOneT`.`Users_has_Ticket` (`Users_id`, `Ticket_id`)
-- use saved value
VALUES ( idU, _idTicket );
INSERT INTO `dbOneT`.`Accuse` (`Pseudo`,`LienFaceit`)
VALUES (pseudo, lienacc);
-- save assignerd AI value to the variable
SET _idAccuse := LAST_INSERT_ID();
-- use saved values
INSERT INTO `dbOneT`.`Ticket_has_Accuse` (`Ticket_id_A`, `Accusé_id`)
VALUES (_idTicket, _idAccuse);
END