2017-12-27 9 views
0

私は10行のテーブルを持っています。各行にはID、名前、年があります。各IDには、前の値から3ずつ増えた値があります。たとえば、最初の行のIDは1、次にIDは4などです。MySQLのローのインクリメントされた値をリセットする

最初の9行を削除した後、次の行はIDが4の代わりに追加され、31

次の行の値を4(または最後に3を加算した値)から開始するには、どうすればよいですか?

+0

どのようにして最初に3ずつ値を増やしていますか?データベースのidカラムがauto_incrementに設定されていますか? – IncredibleHat

+0

[プライマリキー削除後に外部キーを減らすSQLite](https://stackoverflow.com/questions/47838907/decrementing)の重複が考えられます。 -foreign-key-after-primary-key-deletion-sqlite)。特に、質問に対する私の最後のコメントが適用されます。 – Uueerdo

+2

自動IDの削除や改ざんは危険です(一般的には無意味/不要)。複数のデータベースからのデータを統合する際に重複を避けるために使用されることが多いため、増分量が1でない場合は特にそうです。 – Uueerdo

答えて

0

testテーブルのidフィールドの新しいAUTO_INCREMENT値をユーザが定義したstepで計算するFUNCTIONの例。

CREATE FUNCTION `test`(`step` INT) RETURNS int(11) 
    NO SQL 
BEGIN 
IF `step`<1 THEN 
SET `step` = 1; 
END IF; 
RETURN `step`+(SELECT MAX(`id`) FROM `test`); 
END 

あなたは、テーブルに新しい行を挿入するときidAI)フィールドに新しい値を計算するためにそのように機能を使用することができます。 たとえば、

INSERT INTO TABLE `test` (`id`,`value`) VALUES ((SELECT `test`(4)),'yourvalue'); 
関連する問題