artcore |
Отправлено: 21.12.2005, 21:39 |
|
Не зарегистрирован
|
В общем что-то не могу понять как сделат следующее:
напрмер таблица:
id |value|
1 a
1 a
2 b
1 a
Вот как удалить одну любую запись при id=1? |
|
olegenty |
Отправлено: 22.12.2005, 07:25 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
смотря какая СУБД.
|
|
idhas |
Отправлено: 22.12.2005, 13:30 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 17
|
СУБД MS SQL 2000 |
|
Gedeon |
Отправлено: 22.12.2005, 15:08 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
А никак, нормально базу надо проектировать.
|
|
Guest |
Отправлено: 22.12.2005, 20:33 |
|
Не зарегистрирован
|
Ну почему, извратившись можно.
Например, удаляем первую из них, но не средставми запроса.
Находите в таблице запись с нужным id |value
встаете на эту запись таблицы (то есть делаете ее текущей)
и Table1->Delete();
Что-то типа (писал не в Builder-e — если есть ошибки исправьте сами)
CODE |
Table1->First();
while(!Table1->Eof()){
if(Table1->Fields->Fields[0]->AsString == "1" &&
Table1->Fields->Fields[1]->AsString == "a"){
Table1->Delete(); break;
}
Table1->Next();
}
|
А Gedeon конечно прав: правильно проектируйте базу данных,
иначе потом проблем будет выше крыши.
Отредактировано Admin — 22/12/2005, 20:37 |
|
olegenty |
Отправлено: 23.12.2005, 09:02 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
в IB/FB можно, идентификатором записи является также db_key )
но табличку надо перепроектировать
|
|
AVC |
Отправлено: 23.12.2005, 09:14 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
Например, удаляем первую из них, но не средставми запроса.
Находите в таблице запись с нужным id |value
встаете на эту запись таблицы (то есть делаете ее текущей)
и Table1->Delete();
|
Вы пытались это реализоватьl? Подозреваю, что так ни чего не выйдет, так как Table->Delete для SQL'евских баз порождает запрос "Delete where все_поля".
Быстрый тест на MySQL дал ошибку (закономерную) "Multiple records found, but only one was expected."
Такое можно провернуть с Oracl'ом так как он снабжает каждую запись служебным уникальным полем, но это уже из другой оперы.
Есть вариант решения — добавить поле и заполнить его так, что бы записи 1 а отличались друг от друга. Но это и есть, как писал Gedeon, доведение структуры до нормального состояния. |
|
Gedeon |
Отправлено: 23.12.2005, 13:12 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Совершенно согласен с AVC я тоже сначала хотел предложить удалять запись на клиенте, но это не возможно.
Есть все-таки способ с созданием временной таблицы, удалением оттуда записи и возвратом записей в первоначальную, но это просто кретинизм.
|
|
artcore |
Отправлено: 25.12.2005, 15:34 |
|
Не зарегистрирован
|
В принципе да, мой баг, я думал обойдусь без уникального поля, оказалось нет, что ж, переделаем... |
|