#php #mysql #sql #phpmyadmin
#php #mysql #sql #phpmyadmin
Вопрос:
Допустим, у меня есть 80 записей в таблице, и я установил для нее автоматическое увеличение при заполнении таблицы. Затем я удалил 10 записей из разных позиций, и теперь у меня есть записи, которые выглядят как:
7, 8, 9, 11, 14, 16, и т.д…
Я хотел бы перенумеровать их в последовательном порядке, но не хочу делать это вручную. Как я смогу создать для них новые идентификаторы ключей на основе алфавитного порядка?
Заранее спасибо!
Комментарии:
1. Предполагая, что вы нигде не ссылаетесь на этот идентификатор, есть ли какая-либо причина для их изменения вообще?
2. Короче говоря: вы не должны. Более подробно: Вы не получаете никаких преимуществ и можете повредить свою базу данных. ИДЕНТИФИКАТОР — это идентификатор. Обычно, когда идентификатор изменяется, это означает, что это новая запись вместо измененной.
3. Я ссылаюсь на идентификатор, нужно показать # s рядом с каждой записью
Ответ №1:
Вы не хотите этого делать, и вам не нужно это делать. Это нарушает многие принципы проектирования БД и приводит к нежелательным результатам (поверьте мне в этом).
Если вам нужна последовательная нумерация чего-либо, создайте для этого триггер, НЕ полагайтесь на первичный ключ для таких целей.
Ответ №2:
В дополнение к предыдущим ответам, если вы просто ищете способ последовательной нумерации ваших строк при выводе в какое-либо представление, разве вы не можете просто сделать это динамически с помощью php?
table: dogs
id | name
---------
1 | Rover
4 | Fido
7 | Timothy
Затем (модифицируется для любого цикла, который вы запускаете
<?
$Dogs = mysql_fetch_array(your sql query);
foreach ($Dogs as $cnt => $Dog)
{
echo ($cnt 1).": ".$Dog['name']."<br />";
}
?>
Выводило бы:
1: Ровер
2: Fido
3: Тимоти
Сохраняя при этом неприкосновенность индексов базы данных?