Генерация уникального ID сдвиг при удалении - MySQL

Узнай цену своей работы

Формулировка задачи:

Вот к примеру делаю такую таблицу:
CREATE TABLE t401 (id MEDIUMINT NOT NULL AUTO_INCREMENT,surname char(20), name CHAR(20) ,patronymic char(20), primary key (id));
Получиться табличка с автоматическим заполнением уникального ID. Как сделать, что бы при удалении какой нибудь строки в таблице, генератор автоматически переприсвоил уникальные ID. Пример: 1 Вася 2 Петя 3 Жора Удаляем Петю. Получаем: 1 Вася 3 Жора А мне надо получить: 1 Вася 2 Жора Заранее спасибо.

Решение задачи: «Генерация уникального ID сдвиг при удалении»

textual
Листинг программы
$i=$unikey; //позиция в которую вставляется строка
$res = $db->query("SELECT * FROM clietsbase " );
//увеличение всех номеров на единицу от вставляемого
while($row=$res->fetch_assoc()){
$j=$i+1;   
$k=$i-1;  
$result = $db->query ("UPDATE clietsbase SET unikey='$j',flag=1 WHERE unikey=$i and flag=0");
$result = $db->query ("UPDATE clietsbase SET unikey='$k',flag=0 WHERE unikey=$k and flag=1");
 $i++;
}
$result = $db->query ("UPDATE clietsbase SET unikey='$k',flag=0 WHERE unikey=$k and flag=1");
 
//вставка строки на позицию куда хотели
$result = mysqli_query ($db, "INSERT INTO clietsbase (unikey,day,NameClient,Adress,Contakt) VALUES ('$unikey','$day','$NameClient','$Adress','$Contakt')");

Объяснение кода листинга программы

  1. В первую очередь, мы начинаем с переменной $i, которая равна уникальному ключу (unikey).
  2. Затем мы выполняем запрос SELECT, чтобы получить все строки из таблицы clietsbase.
  3. В то время как есть строки в результате запроса SELECT, мы увеличиваем значение $i на 1.
  4. Мы также сохраняем предыдущее значение $i в переменной $k, чтобы использовать его позже.
  5. Мы выполняем два запроса UPDATE: один для увеличения значения unikey на 1 для следующей строки после $i и установки флага на 1, а другой для уменьшения значения unikey на 1 для предыдущей строки после $i и установки флага на 0.
  6. Мы увеличиваем значение $i на 1 после каждого цикла, пока все строки не будут обработаны.
  7. После того, как все строки были обработаны, мы выполняем последний запрос UPDATE, чтобы установить флаг на 0 для последней строки после $i.
  8. Наконец, мы выполняем запрос INSERT, чтобы вставить новую строку с данными клиента на позицию, определенную значением $i. Список переменных и их значений:
  9. $i - уникальный ключ (unikey)
  10. $unikey - значение, которое мы хотим вставить в unikey
  11. $day - день
  12. $NameClient - имя клиента
  13. $Adress - адрес
  14. $Contakt - контактная информация
  15. $j - следующая позиция
  16. $k - предыдущая позиция
  17. $result - результат выполнения запроса
  18. $db - объект подключения к базе данных

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5