SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 10.07.2013 14:53:54

Alexeev
Участник
Зарегистрирован: 09.07.2013
Сообщений: 7

Пронумеровать строки таблицы

Есть поле таблицы с автоинкрементом. По некоторому условию удаляются первые 5 строчек таблицы. Необходимо перенумеровать (обновить) этот столбец. Подскажиет пожалуйста с помощью какого запроса это возможно реализовать.
Сначало думал, удалять столбец и создавать заново, но этого нельзя сделать в триггере. Хотелось бы сделать все апдейтом.

Неактивен

 

#2 10.07.2013 15:14:34

Alexeev
Участник
Зарегистрирован: 09.07.2013
Сообщений: 7

Re: Пронумеровать строки таблицы

И подскажите почем не работает так:

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;   
        set @cnt=0;       
        Update kp_kompas set kp_kompas.id=(select @cnt=@cnt+1 as cnt, id From kp_kompas);

    END IF;




END$$

Неактивен

 

#3 10.07.2013 15:38:38

Alexeev
Участник
Зарегистрирован: 09.07.2013
Сообщений: 7

Re: Пронумеровать строки таблицы

Немного исправил

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$$


Только почему-то не работает, несмотря на то, что тело триггера, если выполнять отдельно как запросы приводит таблицу к требуемому виду.

Неактивен

 

#4 10.07.2013 19:19:13

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Пронумеровать строки таблицы

>Необходимо перенумеровать (обновить) этот столбец.

Рекомендовал бы Вам не производить никаких манипуляций с autoincrement-столбцом. Он заполняется системой и трогать его не нужно.
В чем необходимость перенумеровывания?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson