sql >> データベース >  >> RDS >> Mysql

MySQLがAUTO_INCREMENTIDを再利用するのを停止します

    この場合、公的にアクセス可能な場所でAUTO_INCREMENTインデックスを使用するべきではありません。

    他のデータからキーフィールドを取得するか、別のメカニズムを使用してIDを作成します。私が以前に使用した1つの方法は、(潜在的に深刻な)パフォーマンスへの影響を認識する必要がありますが、最後に使用されたキーを追跡し、それをインクリメントするための「キー」テーブルです。

    そうすれば、数値以外の任意のタイプのキーを使用し、独自のアルゴリズムを使用してそれらをインクリメントできます。

    過去に6文字の英数字キーを使用しました:

    CREATE TABLE `TableKeys` (
      `table_name` VARCHAR(8) NOT NULL,
      `last_key` VARCHAR(6) NOT NULL,
      PRIMARY KEY (`table_name`)
    );
    
    SELECT * FROM `TableKeys`;
    
    table_name | last_key
    -----------+---------
    users      | U00003A2
    articles   | A000166D
    products   | P000009G
    


    1. 'PDOException'とメッセージ'SQLSTATE[22001]:文字列データ、右切り捨て:0

    2. SQLServerのSelectステートメントでWhere句を使用する方法-SQLServer/TSQLチュートリアルパート109

    3. sql::SQLStringの動作

    4. Postgres-XL9.6の新機能