![]() |
|
Модераторы: skyboy |
![]()
|
|
| del3d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
Здравствуйте.
Пишу набор скриптов для работы с БД Имеется таблица без первичного ключа:
Заполнена, к примеру: Иван | 23 Петр | 34 Петр | 34 Петр | 34 Петр | 34 Можно ли как нибудь удалить конкретную запись, допустим 3-ю? Т.е. только ту, которую я захочу удалить, а не просто одну из совпадающих |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
||||
|
||||
| del3d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
А вдруг будет такая таблица..
Хочется из браузера при клике на строке, чтобы генерировался запрос типа:
и атправлялся на сервер.. |
|||
|
||||
| DimW |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
что значит ВДРУГ? вы что не приходя в сознание БД проектируете? если все действительно так запущено то процедуру добавления первичного ключа нужно отработать до автоматизма, по крайней мере в слечае с mysql т.к. системного идентификатора для строк в нем не предусмотренно, в отличие от Oracle, но и это не всегда спасает.
и не "чего-то там" а так:
и ни как иначе. |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
делаешь запрос:
т.е. перечисляешь все поля "выбранной" записи. и ставишь "LIMIT 1". не шали. подумай сам: заметишь ты разницу между удалением третьей по порядку в твоем примере или четвертой? Наверное, удалять можно любую с точно соответствующим содержимым. будет несколько - удалишь одну из. Добавлено через 2 минуты и 13 секунд возможно, рациональнее будет для BLOB полей указывать хеш значения. по крайней мере, запрос будет человекочитаемым и не выйдет за пределы лимитов на память, даже если эти лимиты будут небольшие, а значения - огромными. |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
||||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
и что? а если 200? не вижу проблемы, если запрос формируется динамически скриптом. Или тебя беспокоит размер получаемого запроса? есть такой front-end для mysql, называется phpmyadmin. его разработчики абсолютно не знают, с какими БД придется работать их продукту. С первичным ключом, али нет. Даже если del3d делает свою CMS и хочет разработать простую систему бекапа/синхронизации, то он тоже никак не может знать, какие таблицы ему "подсунут". Я не к тому, что можно проектировать БД "спустя рукава", а к тому что перед возгласами "у тебя неправильно спроектировано, иди учи матчасть" не лишне будет спросить "а возможно ли поменять структуру на более корректную?" |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
согласен что если идет разработка универсального инструмента для работы с данными, то такой вариан нужно учесть, но если проектируешь БД для себя то лучше непренебригать такими возможностями в ущерб удобству и производительности. и вообще телепат из меня некудышный, если все же вы правы то отлично. |
|||
|
||||
| ZZZubec |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Можно ли удалить 3ию запись, запросто используй LIMIT 1. и делай условие.
я тебя на столько же уверяю, что ты удалишь именно 3ию, насколько ты сможешь определить, что она именно 3ия... не доверяешь базе, делай цикл. и в цикле считай записи, и когда будет нужная, снова делай бесполезный запрос. По крайне мере здесь у тебя появится мнимое очучение того что ты удалил именно по порядковому номеру... *единственная проблема человека - это сам человек... |
|||
|
||||
| del3d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
Спасибо skyboy
Хочется, конечно, сделать универсальный инструмент..
А можно ли узнать первичный ключ таблицы? |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
||||
|
||||
| del3d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
ДУзнать, есть ли он вообще и его имя его поля (полей)..
|
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 4 Всего: 44 |
del3d, в mysql не селен, полюбому должны быть системные таблицы в которых эта инфа есть, погугли или дождись знающих людей.
|
|||
|
||||
| Gwire |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 216 Регистрация: 7.8.2007 Где: Николаев Репутация: 1 Всего: 4 |
Может это поможет.
Это сообщение отредактировал(а) Gwire - 9.5.2009, 13:15 |
|||
|
||||
| del3d |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 13.11.2007 Репутация: нет Всего: нет |
Спасибо! Вот так написал:
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |