Autor Zpráva
Měsíček
Profil
Zdravím všechny,
potřeboval bych prosím poradit s (pro vás) menším problémem. Použiji-li tyto příkazy:
CREATE TABLE `adr` (
 `id` smallint(100) auto_increment,
 `name` varchar(30) not null default "Name",
 primary key (`id`)
);

INSERT INTO `adr` VALUES (NULL, "A");
INSERT INTO `adr` VALUES (NULL, "B");
INSERT INTO `adr` VALUES (NULL, "C");
INSERT INTO `adr` VALUES (NULL, "D");
INSERT INTO `adr` VALUES (NULL, "E");
a poté
DELETE FROM `adr` WHERE `adr`.`id` = 3 LIMIT 1
Tak mi po tomto příkazu v tabulce zůstane
+-----+------+
| id  | name |
+-----+------+
|  1  |  A   |
|  2  |  B   |
|  4  |  D   |
|  5  |  E   |
+-----+------+
Čiliže id bude {1,2,4,5} a já bych potřeboval, aby id bylo bez děr tedy, aby se dalo zase na {1,2,3,4} ovšem, aby se ve sloupci "name" nic nezměnilo. Jak tedy "defragmentovat" sloupec "id"?

Již dopředu děkuji za rady.
Kcko
Profil
SET @counter = 0;
UPDATE adr SET id := @counter + 1;
Kcko
Profil
Argghh .. tak kecam

SET @counter = 0;
UPDATE adr SET id = @counter := @counter + 1 ;
Měsíček
Profil
Jé, Kcko díky moc :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0