【发布时间】:2019-11-29 04:21:41
【问题描述】:
我想将 (SELECT MAX(Id) FROM Table 传递给我尝试过的 mariadb 的 setval() 函数:
SELECT setval(`MySequence`, (SELECT MAX(`Id`) FROM `Table`));
但是不行,我也试过了:
SET @max_value = (SELECT MAX(`Id`) FROM `Table`);
SELECT setval(`MySequence`, @max_value);
我该怎么做?
编辑我在发布问题时犯了一个错误。我在第二个代码上使用了 SET 并且没有工作
编辑 正如我在 cmets 上所说,我只尝试执行一次,从 Entity Framework Core 迁移执行。我最后做的是执行SELECT MAX(Id) FROM Table 并从迁移代码中恢复该值,以便稍后在$"SELECT setval('sequence', {value}, true)" 上插入它
【问题讨论】:
-
小心! -- 如果另一个线程潜入,它可以得到你认为你得到的
Max(Id)。不要这样做序列!见AUTO_INCREMENT -
谢谢,这是一次迁移。它将执行一次,在表上的大型升级将起作用之后。
标签: sql entity-framework-core mariadb sequence-sql mariadb-10.3