postgresql 原则/查询构建器:如何更改自动递增计数器?

kgqe7b3p  于 2023-01-05  发布在  PostgreSQL
关注(0)|答案(1)|浏览(102)

我有一个带有DBMS后端的Nextcloud服务器。我需要更改DBMS表中下一个条目ID的自动递增计数器。
一种用法是在年初更改发票编号(即今年从202300000开始)。另一种用法是在迁移之后。我需要保留源条目的ID,这样next-ID计数器可能会出错。在下一次插入时,计数器从旧值递增,并抛出错误,因为新ID已经存在。
在mySQL上,我将执行
第一个月
在Postgresql(我目前选择的数据库)上,我将对
ALTER SEQUENCE oc_myapp_mytable_id_seq RESTART WITH 20;
但是,我不愿意使用直接的DB操作,而寻求抽象的Doctrine / QueryBuilder方法。
有没有办法通过Doctrine DB不可知地更改下一个增量值?
如果没有,我如何通过QueryBuilder直接向数据库发出命令?QueryBuilder能判断出后端的数据库类型吗?话说回来,如何通过PHP的mysqli适配器来确定数据库类型?

wgeznvg7

wgeznvg71#

没有内置的方式来以“抽象”的方式(我知道)递增自动递增值。
我假设您使用查询构建器时指的是“DBAL”-在那里您可以检索当前的平台名称:
https://www.doctrine-project.org/projects/doctrine-dbal/en/current/reference/platforms.html#platforms

$platform = $conn->getDatabasePlatform();

然后,您可以根据此信息进行操作,并以编程方式设置计数器。

相关问题