0
私は10行のテーブルを持っています。各行にはID、名前、年があります。各IDには、前の値から3ずつ増えた値があります。たとえば、最初の行のIDは1、次にIDは4などです。MySQLのローのインクリメントされた値をリセットする
最初の9行を削除した後、次の行はIDが4の代わりに追加され、31
次の行の値を4(または最後に3を加算した値)から開始するには、どうすればよいですか?
私は10行のテーブルを持っています。各行にはID、名前、年があります。各IDには、前の値から3ずつ増えた値があります。たとえば、最初の行のIDは1、次にIDは4などです。MySQLのローのインクリメントされた値をリセットする
最初の9行を削除した後、次の行はIDが4の代わりに追加され、31
次の行の値を4(または最後に3を加算した値)から開始するには、どうすればよいですか?
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
あなたは、テーブルに新しい行を挿入するときid
(AI
)フィールドに新しい値を計算するためにそのように機能を使用することができます。 たとえば、
INSERT INTO TABLE `test` (`id`,`value`) VALUES ((SELECT `test`(4)),'yourvalue');
どのようにして最初に3ずつ値を増やしていますか?データベースのidカラムがauto_incrementに設定されていますか? – IncredibleHat
[プライマリキー削除後に外部キーを減らすSQLite](https://stackoverflow.com/questions/47838907/decrementing)の重複が考えられます。 -foreign-key-after-primary-key-deletion-sqlite)。特に、質問に対する私の最後のコメントが適用されます。 – Uueerdo
自動IDの削除や改ざんは危険です(一般的には無意味/不要)。複数のデータベースからのデータを統合する際に重複を避けるために使用されることが多いため、増分量が1でない場合は特にそうです。 – Uueerdo