mysql - 如何仅使用 mysql 获取特定 ID
问题描述
我正在寻找可以帮助我获取在第一行创建的票证的 ID。
我知道我可以通过使用不同的准备好的查询来简化这一点,但我不想(尝试看看是否可以通过这种方式,如果它不使用多个查询方式。
我知道 mysql 中的 LAST_INSERT_ID() 但我有点担心同时插入几行....
在我的研究过程中,我还看到有人直接选择指定的 ID,但这是一个很大的资源成本。
我也看到了@@INSERTED,我没有看到它们之间有很大的区别,所以我遇到了同样的问题......
编码 :
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
“计算机”是树莓派 4B,带有 8go ram
在 Raspberry Pi OS(A debian)上
谢谢你的帮助,祝你有愉快的一天
汤姆
解决方案
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
推荐阅读
- c++ - 将多维向量的大小调整为 0 的性能开销?
- javascript - 使用带有 Left 属性的 CSS 过渡不会平滑过渡
- python - Flask,Jinja2 - 缺少位置参数,但我提供了多个
- python - 查明 Django 错误报告的日志消息
- python - 简单的 Flask 应用程序运行但页面不会加载
- http - 如何从命令行以人类可读格式查看 http/2 标头(hpack 编码)?
- python-3.x - 查找 pandas 日期时间列中的值之间的中点,并根据中点制作开始和结束时间段列
- influxdb - 包含 json 数据到 Influx 的 Telegraf Tail 文件
- ruby-on-rails - Rails 应用程序的 ERR_CERT_COMMON_NAME_INVALID 是弹性豆茎
- firebase - 向 Firebase 中的现有集合添加更多文档