0

以下のように、テーブル名agent_mstにMySQL Trigger BEFORE INSERTを作成しました

BEGIN
    DECLARE max_id INT;

    SET max_id=(SELECT MAX(agent_id_pk)+1 FROM `agent_mst`);
    IF (max_id IS NULL) THEN
        SET max_id=1;
    END IF;

    SET NEW.date_added=NOW(),
        NEW.date_updated=NOW(),
        NEW.agent_code = CONCAT('SDA', LPAD(max_id, 4,'0'));

END

つまり、レコードを挿入するたびに、agent_code フィールド値をSDA0001、SDA0002、SDA0003 などに生成します。

ここで、コードSDA0003のレコードを削除して新しいレコードを挿入すると、間違いなくエージェント コードがSDA0004として生成されます。max_idを取得して 1 ずつ増やしているため、ここではSDA0003を再度取得したいと考えています。すべてのagent_codesが順番にとどまることができるように。どうやってするか?

前もって感謝します。

4

2 に答える 2

1

最初の (最小の) 不足している ID を特定する必要があります。このリンクで確認してください。選択クエリでそれを行う良い方法です: mysqlテーブルで使用されていない最小値を見つける

于 2012-12-26T11:01:31.950 に答える
0

次の自動インクリメント ID を知るには、以下のクエリを実行して、列「Auto_increment」を確認してください。

SHOW TABLE STATUS FROM DBName where name = 'tableName' 
于 2012-12-26T10:48:54.843 に答える