MySQL で有効な自動増分値として 0 を強制する方法 質問する

MySQL で有効な自動増分値として 0 を強制する方法 質問する

簡単に言うと、skelスタイル ファイルとしてインポートしたい SQL ファイルがあるので、これをプログラムで繰り返し実行します。SQL ファイルは好きなように編集できますが、アプリケーション自体には触れたくありません。

このアプリケーションは、userid = 0匿名ユーザーを表すために を使用します。また、この「ユーザー」を表すために、データベース内に関連 (空白) エントリがあります。したがって、 my の行はskel.sql次のようになります。

INSERT INTO `{{TABLE_PREFIX}}users` VALUES (0, '', '', '', 0, 0, 0, '', '', 0, 0, 0, 0, 0, NULL, '', '', '', NULL);

これの問題は、技術的には無効な値であるフィールドuidであるということです。または、少なくとも、これを 0 に設定すると、基本的に MySQL に「次の ID をこのフィールドに挿入してください」と指示していることになります。auto_increment0

INSERTさて、SQL ファイルにクエリを入れることはできると思いますが、このフィールドにUPDATE実際に挿入したいことを MySQL 全般に伝える方法はあるのでしょうか?0

ベストアンサー1

私が得た答えからここ:

以下を使用できます:

SET [GLOBAL|SESSION] sql_mode='NO_AUTO_VALUE_ON_ZERO'

説明されているようにここは、MySQL が INSERT/UPDATE ID 0 を次のシーケンス ID として解釈するのを防ぎます。このような動作は NULL に制限されます。

ただし、これはアプリケーションの動作としては非常に悪いものだと思います。特に後日レプリケーションを実装することを選択した場合は、一貫して使用されるように細心の注意を払う必要があります。

おすすめ記事