gpt4 book ai didi

MySQL 使用此增量 id 插入

转载 作者:行者123 更新时间:2023-11-29 15:39:00 26 4
gpt4 key购买 nike

我有一个 logs 表,其中包含 idlog_stringcreated_at

日志的 DDL:

CREATE TABLE `logs` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`log_string` varchar(255) NULL,
`created_at` datetime DEFAULT NULL
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

log_string 列是由 concat idcreated_at 以及一些字符串组成的,我通过执行两次插入来做到这一点:

$log = App\Log::create(); //insert at the first time
$logString='This is log '.$log->id.'('.$log->created_at.')';
$log->update(['log_string'=>$logString]); //insert at the 2nd time

是否可以只插入一次来做到这一点?

MySQL 中有 LAST_INSERT_ID(),但没有 THIS_INSERT_ID(),知道吗?

最佳答案

您想要获取下一个插入 ID 以及创建下一个日志条目的时间戳 (created_at)。所以,换句话说,您希望有 future 的条目:)

所以不,这是不可能的。您可以通过查看当前 id 是什么来预测它,然后自己将其加 1,因为这可能是下一个日志 id。但强烈建议不要采用这种方法,因为如果您在多个位置管理此表逻辑,您永远不知道下一个 id 会是什么,因为许多脚本将在不同的时间间隔更改表。

所以不,没有办法在一个查询中完成它。但是,您可以编写一个 cron 来每天填充一次 log_string 列,如下所示:

UPDATE logs SET log_string = CONCAT("This is log ", id, "(", created_at, ")") WHERE log_string IS NULL;

我没有测试该查询,只是为了给您一个想法。

这样您就不需要每次都运行额外的查询。您只需这样做,每天一次左右即可完成一堆条目。

希望有帮助

关于MySQL 使用此增量 id 插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57883493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com