MariaDB 11.x - 更改序列重新启动不起作用?

问题描述 投票:0回答:1

我正在尝试使用

ALTER SEQUENCE
重置我的序列,它表示 MariaDB 10.3+ 中支持它,因为他们引入了序列支持。

但是我在尝试使用序列所在表的

MAX(id) + 1
值重新启动序列时遇到错误。

根据 MariaDB 的帮助,看起来应该支持它,但我遇到了语法错误。

更改序列帮助 -

https://mariadb.com/kb/en/alter-sequence/

任何帮助表示赞赏..

MariaDB [bcfactory]> select * from job_SEQ; +-----------------------+---------------+---------------------+-------------+-----------+------------+--------------+-------------+ | next_not_cached_value | minimum_value | maximum_value | start_value | increment | cache_size | cycle_option | cycle_count | +-----------------------+---------------+---------------------+-------------+-----------+------------+--------------+-------------+ | 1 | 1 | 9223372036854775806 | 1 | 50 | 1000 | 0 | 0 | +-----------------------+---------------+---------------------+-------------+-----------+------------+--------------+-------------+ 1 row in set (0.000 sec) MariaDB [bcfactory]> alter sequence job_SEQ RESTART WITH (select MAX(id) + 1 from job); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(select MAX(id) + 1 from job)' at line 1 MariaDB [bcfactory]> select version(); +---------------------------------------+ | version() | +---------------------------------------+ | 11.2.2-MariaDB-1:11.2.2+maria~ubu2204 | +---------------------------------------+ 1 row in set (0.000 sec)
    
mariadb mariadb-11
1个回答
0
投票
不,您不能只在需要值的地方使用子查询。为此,您需要使用动态 sql:

set @restart_sql:=concat('alter sequence job_SEQ restart with ',(select MAX(id) + 1 from job)); prepare restart_sequence from @restart_sql; execute restart_sequence; deallocate prepare restart_sequence;
    
© www.soinside.com 2019 - 2024. All rights reserved.