Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal,
alguém pode me ajudar no seguinte raciocínio...
tenho uma tabela com uma coluna chamada ID
----------------------------------
+ ID + FIELD + FIELD +
|---------|----------|-----------|
| 1 |----------|-----------|
| 2 |----------|-----------|
| 3 |----------|-----------|
.........................................etc
Esse ID não é Auto Increment, mais segue uma sequencia conforme exemplo acima.
preciso que ao INCLUIR ou ao DELETAR em uma posição variável, recalculasse os ID e fazer o UPDATE;
Exemplo: se DELETAR o ID 2, os próximos ID subtrai-se menos 1. Onde o 3 virá o 2, 4 vira 3 ..etc.
A mesma coisa ao INCLUIR em uma posição variável.
Alguma idéa de como fazer?
a coluna chama-se ID mais NÃO é o IDENTIFICADOR dela. é uma base bem antiga ( longa história )
Bom a unica maneira de fazer isso seria repassar o ID a partir dai
por exemplo existe 1,2,3,4,5,6,7,8,9
Ai eu vou deletar a 4, faria assim
DELETE FROM tabela WHERE id = 4;
Depois:
SELECT id FROM tabela WHERE id > 4;
Ai dentro do while, voce vai alterando o ID e colocando o novo com auto incremento, exemplo:
<?php
$i = 4;
while($rs= pg_fetch_assoc($resultado)){
$i++;
// UPDATE tabela SET id = $id WHERE id = $rs["id"]
}
?>
Basicamente isso!
É necessário esse dado ser gravado fisicamente na tabela mesmo ?
Creio que se vc manter apenas um ID Fake de referência, na hora de exibir, vc pode criar dinamicamente esses inteiros em ordem, sem precisar ficar escrevendo na tabela toda hora.
@Bruno Henrique da Costa, ajudou quanto a DELETAR, obrigado!
@William Bruno, sim é necessário para manter a order da "lista" não á nenhum outro campo que eu posso usar.
mais sua ideia é boa! vou usar ao INCLUIR um novo item.
Grato a queles que ajudaram :)
Qual motivo alterar o IDENTIFICADOR de uma tabela?