Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ID строчки, удаление строки и сдвиг всех других ID 
V
    Опции темы
darkvivi
Дата 7.10.2013, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



 Здравствуйте! Недавно я столкнулся с такой проблемой:
 есть таблица, каждая строчка определена неким PL_ID, как можно так хитро удалить строку при помощи DELETE FROM table WHERE PL_ID = 5, чтобы пятой строкой стала шестая, и так далее, чтобы не было 1,2,3,4,6... Или нужно использовать какой-нибудь более крутой идентификатор? smile  

 А, или вот как ещё можно: создать счётчик, и пройтись по всем PL_ID... А как сделать счётчик на PL/SQL?
 Заранее оромное спасибо! smile 

Это сообщение отредактировал(а) darkvivi - 7.10.2013, 15:07
PM MAIL   Вверх
Akina
Дата 7.10.2013, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



ЗАЧЕМ???


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 7.10.2013, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Код

DELETE FROM table WHERE PL_ID = :pl_id;
update table set pl_id = pl_id -1 where pl_id > :pl_id;

есесно, это будет работать лишь в режиме монопольного доступа по модификации.
А потому перед этим кощунством, обязательно 
Код

lock table table in exclusive mode


Добавлено @ 16:11
Цитата(Akina @  7.10.2013,  17:08 Найти цитируемый пост)
ЗАЧЕМ??? 

Ты сам через это не проходил?  smile 

Это сообщение отредактировал(а) Zloxa - 7.10.2013, 16:13


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
darkvivi
Дата 7.10.2013, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



Спасибо,сейчас попробую))

Код

lock table table in exclusive mode

Обязательно два тейбла подряд ставить? smile

Ну это ладно, а что такое pl_id и :pl_id ? Что из этого число, а что переменная? smile 

Это сообщение отредактировал(а) darkvivi - 7.10.2013, 16:31
PM MAIL   Вверх
Zloxa
Дата 7.10.2013, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(darkvivi @  7.10.2013,  17:20 Найти цитируемый пост)
Обязательно два тейбла подряд ставить? 

второй тейбл это имя таблицы из приведенного вами примера

Добавлено через 1 минуту и 14 секунд
darkvivi, но над вопросом, который задал Акина - таки задумайтесь, задумайтесь. Он калач тертый, гoвнодизайн за версту чует, и не такой злой как я, чтоб давать вредные советы нубам. smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
darkvivi
Дата 7.10.2013, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



 А как тогда сделать, не меняя PL_ID? Как поймать строчку, и как её удалить без уникального идентификатора?)
PM MAIL   Вверх
Zloxa
Дата 7.10.2013, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(darkvivi @  7.10.2013,  17:20 Найти цитируемый пост)
а что такое pl_id и :pl_id ?

pl_id это имя столбца
:pl_id это имя связанной переменной, которая содержит нужный идентификатор

Добавлено через 3 минуты и 1 секунду
Цитата(darkvivi @ 7.10.2013,  17:33)
А как тогда сделать, не меняя PL_ID? Как поймать строчку, и как её удалить без уникального идентификатора?)

во первых есть rowid
во вторых ваш вопрос - не понятен smile

Описывайте цель, а не отдельный шаг


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Akina
Дата 7.10.2013, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: нет
Всего: 454



Цитата(Zloxa @  7.10.2013,  17:10 Найти цитируемый пост)
Ты сам через это не проходил? 

Я не помню, как называлась книжка по базам данных, которая мне попалась в руки самая первая. Но в ней эта нехитрая мысль "уникальный индекс - не для юзера" разжёвывалась очень подробно... 
В общем, можно считать, что у меня была прививка от этой хрени.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
darkvivi
Дата 7.10.2013, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



java.sql.SQLException: ORA-01008: not all variables bound
ругается на строчку 

Код

DELETE FROM table WHERE PL_ID = :pl_id;

можно ли вместо pl_id поставить число?

Это сообщение отредактировал(а) darkvivi - 7.10.2013, 16:46
PM MAIL   Вверх
Zloxa
Дата 7.10.2013, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(Akina @  7.10.2013,  17:37 Найти цитируемый пост)
В общем, можно считать, что у меня была прививка от этой хрени. 

А я, признаюсь, маялся было впопервой  smile 
Но у меня был не просто первичный ключ. У меня была таблица учета опор линий электропередачи,  порядок следования учитываемых опор был важен. Тогда, на практике, и осознал значение слова "суррогатный"  smile

Добавлено @ 16:45
Цитата(darkvivi @  7.10.2013,  17:42 Найти цитируемый пост)
java.sql.SQLException: ORA-01008: not all variables bound

ну так учитесь биндить бинды в жаве

Это сообщение отредактировал(а) Zloxa - 7.10.2013, 16:46


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
darkvivi
Дата 7.10.2013, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



А это как?)
PM MAIL   Вверх
Zloxa
Дата 7.10.2013, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(darkvivi @  7.10.2013,  17:42 Найти цитируемый пост)
можно ли вместо pl_id поставить число?

разрешаю  smile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
darkvivi
Дата 7.10.2013, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



 C двоеточием число-то?)
 Теперь на третью строчку ругается... где
 
Код

update table set pl_id = pl_id -1 where pl_id > :pl_id;


Это сообщение отредактировал(а) darkvivi - 7.10.2013, 16:54
PM MAIL   Вверх
Zloxa
Дата 7.10.2013, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(darkvivi @ 7.10.2013,  17:50)
C двоеточием число-то?)

а можете объяснить с какого бадуна вашу голову посетила такая идея?

Это сообщение отредактировал(а) Zloxa - 7.10.2013, 16:54


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
darkvivi
Дата 7.10.2013, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 24.9.2008

Репутация: нет
Всего: 1



Ладно, без двоеточия)
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0687 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.