Mámdotaz SQL proreindexovánísloupce ID。
SET @ newid = 0;
UPDATE tablename SET id = (@ newid: = @ newid + 1) ORDER BY id;
Tento dotaz SQL fungujesprávně。
通过SQL进行uložené处理。
ODDĚLOVAČ //
VYTVOŘTE POSTUP reindex
(
V par VARCHAR (50)
)
ZAČÍT
SET @ newid = 0;
UPDATE dbName.par SET id = (@ newid: = @ newid + 1) ORDER BY id;
KONEC //
ODDĚLOVAČ ;
张贴vytvořenauložen。 Kproblémudocházípřivolání过程。
CALL reindex (souhrn);
Kde'souhrn'jenázevtabulky。
Voláníuložené过程“重新编制索引”:
\#1054-Neznámýsloupec'souhrn'v'seznamupolí'
内维恩(Nevím),过程程序名为“Neznámýsloupec”,过程程序为“jméno_tabulky”。 Mámněkdechybu? Děkujimnohokrát。
最佳答案
您需要使用动态SQL在过程内部创建UPDATE
查询,然后在PREPARE
和EXECUTE
中创建它:
CREATE PROCEDURE reindex
(
IN par VARCHAR(50)
)
BEGIN
SET @newid=0;
SET @sql = CONCAT('UPDATE dbName.', par, ' SET id=(@newid:=@newid+1) ORDER BY id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
Demo on dbfiddle