powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пронумеровать строки таблицы
7 сообщений из 7, страница 1 из 1
Пронумеровать строки таблицы
    #38327075
alexeevv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть поле таблицы с автоинкрементом. По некоторому условию удаляются первые 5 строчек таблицы. Необходимо перенумеровать (обновить) этот столбец. Подскажиет пожалуйста с помощью какого запроса это возможно реализовать.
Сначало думал, удалять столбец и создавать заново, но этого нельзя сделать в триггере. Хотелось бы сделать все апдейтом.
Или есть какая либо возможность обновлять столбец с автоикрементом?

Пока сделал так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
DELIMITER $$
CREATE TRIGGER CUTTRIGGER BEFORE INSERT ON kp_kompas
FOR EACH ROW
BEGIN

SET @real_count = ( SELECT COUNT(*) FROM kp_kompas ); 
     IF (@real_count >= 50) THEN
         
         DELETE FROM kp_kompas WHERE id < 6;        
         UPDATE kp_kompas
         SET  id = (SELECT @a:= @a + 1 FROM (SELECT @a:= 0) as tbl)
         ORDER BY id;

     END IF;




END$$




Только почему-то не работает, несмотря на то, что тело триггера, если выполнять отдельно как запросы приводит таблицу к требуемому виду.
...
Рейтинг: 0 / 0
Пронумеровать строки таблицы
    #38327122
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeevv,

тут два простых правила:
#1. никогда не меняйте ИД (если он первичный ключ)
#2. если вам когда-нибудь понадобится поменять ИД, применяйте пунк #1.
...
Рейтинг: 0 / 0
Пронумеровать строки таблицы
    #38327133
alexeevv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это необходимость вызвана следующей задачей:
В бд из клиентского приложения приходит 5 инсертов. когда количество записей становится равным 50, первые пять необходимо удалить, т.е. удалить не акутальную информацию. Думал так, как сделал я - будет хорошо. Если ли ещё каки-нибудь варианты? Клиенсткое приложение можно тоже поправить как угодно, галвное чтобы смысл сохранился.
...
Рейтинг: 0 / 0
Пронумеровать строки таблицы
    #38327147
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeevv, добавить в таблицу поле "номер". Клиентское приложение пусть после ввода своих записей вызывает процедуру "check_for_50", в которой будет снос лишних записей и перенумерация оставшихся (то, что вы хотели в триггер запихнуть). А ид и вправду не трогать лучше, если необходимости в том нет наисущественнейшей (а у вас её нет точно).
...
Рейтинг: 0 / 0
Пронумеровать строки таблицы
    #38327181
alexeevv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, спасибо! Завтра попробую реализовать из клиента!
А вообще, я попробывал выполнить insert на сервере, что вызывало ошибку Can't update table '' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
Как я понимаю, немотря на то, что триггер должен вызываться по insert, по внутреннему update он тоже вызовется и возникнет рекурсия?

И вообще как бы этого избежать?

И почему нельзя менять id? Просто моя бд, состоит из пары таблиц, который даже никак не связаны между собой.
Просто, хочу получше во всем разобраться=)
...
Рейтинг: 0 / 0
Пронумеровать строки таблицы
    #38327202
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeevvпо внутреннему update он тоже вызовется и возникнет рекурсия?и именно поэтому он и не вызовется
нельзя изменять в триггере ту же таблицу, на изменение которой он повешен
alexeevvИ почему нельзя менять id? Просто моя бд, состоит из пары таблиц, который даже никак не связаны между собой.потому что потом к ним могут добавиться другие
или потому что вы привыкнете менять ид и станете делать это там, где это явно не надо делать :)
...
Рейтинг: 0 / 0
Пронумеровать строки таблицы
    #38327208
alexeevv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как тогда возможно средствами mysql сервера решить мою задачу?) Хотя бы подскажите что почитать)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Пронумеровать строки таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]