データベーステーブル製品を持っています
Prod_id Prod_name
1 Pen
2 Pencil
3 Eraser
4 book
で製品を削除すると、製品 3 と 4id =2
の ID が1 減るはずです。つまり、以下に示すように 2 と 3 になるはずです。
Prod_id Prod_name
1 Pen
2 Eraser
3 book
この問題を解決するためのアイデア..?? 私はmySqlを使用しています。
データベーステーブル製品を持っています
Prod_id Prod_name
1 Pen
2 Pencil
3 Eraser
4 book
で製品を削除すると、製品 3 と 4id =2
の ID が1 減るはずです。つまり、以下に示すように 2 と 3 になるはずです。
Prod_id Prod_name
1 Pen
2 Eraser
3 book
この問題を解決するためのアイデア..?? 私はmySqlを使用しています。
なぜあなたはそれをする必要がありますか?の場合はそのPRIMARY KEY
ままにしておきます。しかしとにかく、あなたの質問に答えるために、私はあなたがそのためのストアドプロシージャを作成することをお勧めします、
DELIMITER $$
CREATE PROCEDURE DeleteItem(IN _id INT)
BEGIN
DELETE FROM product WHERE Prod_ID = _id;
UPDATE product a
INNER JOIN
(
SELECT @row:=@row+1 NewID,
Prod_Name,
Prod_ID
FROM product a, (SELECT @row:=0) b
ORDER BY Prod_ID ASC
) c ON a.Prod_Name = c.Prod_Name
SET a.Prod_ID = c.NewID;
END $$
DELIMITER ;
プロシージャを呼び出すには、
CALL DeleteItem(3);
INDEX
パフォーマンスを高速化するには、 on列を追加しますProd_Name
。
ALTER TABLE product ADD INDEX (Prod_Name);
prod_id
をそのままにして、番号付けされた新しい列をオンザフライで生成できます。
SET @row=0;
SELECT @row := @row + 1 AS row,
*
FROM product
ORDER BY prod_id
本当に必要なら
update product,
(select Prod_id,@row:=@Row+1 as rn
from product,(select @row:=0) tm
order by Prod_id) t1
set product.Prod_id=t1.rn
where product.Prod_id=t1.Prod_id