我有一个表X,它包含1个默认列,用于记录数据插入的时间:
`a` int,
`b` varchar(10),
`audit_create` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) 然后使用计划事件每1分钟运行一次以下语句:
insert into X (a, b)
select ....语句tables的执行大约需要20秒,所以我假设audit_create列应该是这样的:
`2021-06-21 00:00:20.xxx`
`2021-06-21 00:01:21.xxx`
`2021-06-21 00:02:20.xxx`但是,当每次执行开始运行时,此列的值看起来就像是:
`2021-06-21 00:00:00.804`
`2021-06-21 00:01:00.804`
`2021-06-21 00:02:00.804`为什么默认时间值等于语句开始时,而不是结果准备好时?
发布于 2021-06-21 17:46:17
发布于 2021-06-21 17:38:53
我认为该值是在准备语句时设置的,而不是在执行insert语句时设置的。如果您想要来自执行时间的时间戳,则必须明确指出这一点。如下所示
insert into X (a, b, audit_create )
select valueA, ValueB, Now() from ....我曾经遇到过类似的情况,但不幸的是,我想不起来我在哪里读到了原因。
https://stackoverflow.com/questions/68065275
复制相似问题