2

アップロード時にファイルに名前を付けるためにデータベースを使用しています。私のアプリケーションはデータベースを使用してファイルを識別します (ビデオ ストリーミング用)。したがって、それらは同じである必要があります。しかし、アップロードが失敗したり、誰かがアップロードをキャンセルしたりすると、無駄な ID が残ります。

時間の経過とともに、使用されているよりも多くの無駄な ID 番号があるため、行が挿入されてから 5 日後に未使用とラベル付けするスクリプトを作成しました。これらの「未使用」ID を使用する別のスクリプトを作成し、存在しない場合は新しい ID を挿入することを考えていました。行。しかし、複数のサーバーでそのタスクを実行すると問題が発生することがあります。

行を削除して、その行の ID を今後の自動インクリメントで再利用できますか?

私はこのタスクを達成する他の方法を受け入れていますが、将来の自動インクリメントで削除された ID を再利用できれば.

4

2 に答える 2

2

行を削除すると、実行できます

ALTER TABLE yourtable AUTO_INCREMENT = 1

最後の未使用の ID から開始するように自動インクリメントを再設定しますが、これを行う意味がわかりません。データベースのためにこれを行っている場合は、しないでください。データベースは気にしません。

于 2013-03-06T18:04:51.900 に答える
1

データベースのためであれば、「DON'T」を +1 します。実際にはまったく気にしないからです。そうは言っても、私は少しきちんとしたフリークなので、とにかくそうします。なぜそうすることにしたかの例を挙げます.

auto_increment を曲、購入、その他いくつかのインデックス参照として使用するミュージシャン向けのサービスを作成しましたが、登録フォームとメール機能を備えたほとんどのアプリと同様に、大量の作成者を作成したボット、スパマーなどで爆撃されました。無料のアカウントがたくさんあり、それらは頻繁に削除され(cronタブは約3日ごとに自動的に家を掃除します)、最終的に得られるのは非常に一貫性のないカウントです. 1 から 41、次に 129 から 240、次に 491 から 800 などです。

私が言ったように、私は少しきちんとしたフリークであり、一貫性が好きなので、「ギャップを埋める」ことはより個人的な好みでした. また、データを追跡したいマネージャーなどのためにレポートを印刷する必要があり、彼らは一貫性を好むため、非常に役立ちます.

また、自動インクリメントが既に存在する数値にヒットした場合はどうなりますか? 次に使用可能なものにスキップして続行します。そのため、1 にリセットすることができ、すべてがクールです。大丈夫です。

于 2013-11-15T20:34:06.257 に答える