![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Полуредактируемый запрос [D5, D6]
AngelSaint © (2003-12-09 07:31:00)
Мастера!
Есть запрос:
select s.rowid, asi.rowid, asi.znach, s.name, s.ed_izm
from base051.tbl_incedent i, base051.tbl_add_sveden s, base051.tbl_sveden_incedent asi
where asi.id_incedent = i.id and
s.id = asi.id_add_sveden and
i.id = 111
Проблема в следующем: в результирующем наборе данных, полеs.nameможно редактировать, а полеasi.znachнельзя.
Вопрос: что ето за глюк такой??? вроде обычный запрос, но ведет он себя как-то необычно. Заранее благодарен за умные мысли :)
Vlad (2003-12-09 11:49:00) [1]
Не стоит возвращать 2 rowid в одном наборе данных.
Если по ним происходит дальнейший апдейт, то это вобще может быть чревато неприятностями, если записи не блокируются.
Sergey13 (2003-12-09 11:37:00) [2]
2AngelSaint (09.12.03 11:16) [4]
Так может там 1:1 связь. Я не ковырял такую возможность, т.к. считаю ее вредной и небезопасной, но скорее всего там стоит проверка на количество обновляемых строк. Если у тебя в запросе встречается несколько одинаковых rowid "нередактирующейся" таблицы, то соответственно изменение блокируется. Или может проходит там где 1:М, но в наборе данные со стороны М тоже "случайно" оказались уникальными.
Я бы не советовал тебе пользоваться такими методами.
Кщд (2003-12-09 11:30:00) [3]
AngelSaint (09.12.03 11:16) [4]
обычно Sergey13 телепат, но сегодня, видимо, магнитные бури.
Или задай вопрос нормально или можешь погадать на картах. :)
И ещё раз: на изменение набора данных полученного запросом из нескольких таблиц НЕОБХОДИМО прописывать реакцию на эти самые изменения.
DenK_vrtz (2003-12-09 11:22:00) [4]
>AngelSaint
>все что нужно редактируется
я бы сказал, все что МОЖНО редактируется!
AngelSaint (2003-12-09 11:16:00) [5]
>>Sergey13
Причиа не в этом. подобные запросы к другим таблицам ведут себя нормально, т.е. все что нужно редактируется
Мож у кого еще есть мнения?
DenK_vrtz (2003-12-09 08:55:00) [6]
Если предположить, что СУБД - ORACLE, а ROWID - псевдостолбец, а компоненты доступа к данным - DOA, то в указанном запросе редактирование идет по s.rowid - идентификатору строки таблицы tbl_add_sveden.
При попытке редактированя записей других таблиц запроса, по идее, должна быть получена ошибка о инвалидном столбце.
Sergey13 (2003-12-09 08:53:00) [7]
2AngelSaint (09.12.03 07:31)
Так это нормально, ИМХО. Ты объединяешь "главную таблицу" с каким то "справочником". Связь наверное 1:М. На стороне 1 редактировать можно, на стороне М нет. Я бы тоже на месте Оракла так поступил. 8-)
Кщд (2003-12-09 08:40:00) [8]
ни СУБД, ни компонент доступа.
да и наборы перекрестных данных не должны быть редактируемы, если программно не оговорено обратное.
имхо, это не глюк, а RTFM. :)