如何在sqlite中为所有表使用一个序列

如何在sqlite中为所有表使用一个序列,第1张

概述当我在SQLite数据库中创建表时,会自动为每个表创建单独的序列. 但是我想在我的SQLite数据库中为所有表使用一个序列,并且还需要设置该序列的最小值和最大值(例如min = 10000和max = 999999)(min和max表示序列的起始值和序列的最大值)可以增加). 我知道这可以在Oracle数据库中完成,但不知道如何在SQLite中完成. 有没有办法做到这一点? 不幸的是,你不能这样做 当我在sqlite数据库中创建表时,会自动为每个表创建单独的序列.

但是我想在我的sqlite数据库中为所有表使用一个序列,并且还需要设置该序列的最小值和最大值(例如min = 10000和max = 999999)(min和max表示序列的起始值和序列的最大值)可以增加).

我知道这可以在Oracle数据库中完成,但不知道如何在sqlite中完成.

有没有办法做到这一点?

不幸的是,你不能这样做:sqlite自动为特殊的sqlite_sequence服务表中的每个表创建序列.

即使你以某种方式强迫它将单个序列作为所有表的源,它也不会像你期望的那样工作.例如,在Postgresql或Oracle中,如果将sequence设置为value,但是表已经填充了值为1,2,…的行,则任何使用该序列作为源插入新行的尝试都将失败,并且具有唯一约束违规.

但是,在sqlite中,如果使用以下方法手动重置序列:

UPDATE sqlite_sequence SET seq = 1 WHERE name = 'mytable'

并且您已经有1,3,…行,新的插入尝试不会失败,但会自动为适当的自动增量列分配此序列的最大现有值,因此它可以继续上升.

请注意,您可以使用此Hack为序列指定起始值,但是您无法使其停止递增某个值(除非您使用其他方法观察它).

总结

以上是内存溢出为你收集整理的如何在sqlite中为所有表使用一个序列全部内容,希望文章能够帮你解决如何在sqlite中为所有表使用一个序列所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存