残念ながら、これを行うことはできません。SQLiteは、特別なsqlite_sequence
サービステーブルの各テーブルのシーケンスを自動的に作成します。
また、どういうわけか、すべてのテーブルのソースとして単一のシーケンスを使用するように強制したとしても、期待どおりに機能しません。たとえば、PostgreSQLまたはOracleで、シーケンスを値sayに設定したが、テーブルがすでに値、、 ...で1
行を埋めている場合、そのシーケンスをソースとして使用して新しい行を挿入しようとすると、一意の制約違反で失敗します。1
2
ただし、SQLiteでは、次のようなものを使用して手動でシーケンスをリセットした場合。
UPDATE sqlite_sequence SET seq = 1 WHERE name = 'mytable'
すでに行があります、、、1
... 2
、3
新しい挿入の試みは失敗しませんが、このシーケンスに適切な自動インクリメント列の既存の最大値を自動的に割り当てるので、それは上昇し続けることができます。
このハックを使用してシーケンスの開始値を割り当てることができますが、ある値で増分を停止させることはできません(他の手段を使用して監視しない限り)。