Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
ВнизВопрос к мастерам: как обновить поле используя свою функцию. Найти похожие ветки
← →
BS (2002-07-18 10:47) [0]Задача: нужно создать запрос например
Update ExampleTable set ExampleTable.ExampleField=myfunction(ExampleTable.ForExamplefield);
не знаю все ли правильно написал в инструкции SQL, может , что забыл, короче дело вот в чем.
Дело в том что нужно обновить определенное поле используя значение которое возвращает - определенная мной функция аргументом которой является значение другого поля этой таблицы.
Если можно это сделать через параметры, то подскажите как, а то я недавно начал с Делпфи.
← →
Val (2002-07-18 10:51) [1]Нужно уточнить,данный апдейт должен пройти для каждой записи и аргумент для функции тоже берется из этой, текущей записи?
← →
BS (2002-07-18 10:58) [2]Да для каждой записи указанной в запросе , т.е. фукция устанавливает значение поля в зависимости от другого значения поля, в Accesse с этим проблем нет там и оболочка и база в одном файле, а вот как Delphi.
← →
Val (2002-07-18 11:02) [3]а вот как Delphi.
Delphi не СУБД.
С какой СУБД работаете?
← →
BS (2002-07-18 11:23) [4]В данном случае это Access. но ведь не будешь же теперь писать код в Access, можно ли сделать это через параметры в Делпфи.
← →
Val (2002-07-18 11:36) [5]Не знаю, это ли вам нужно:
MyTable.Open;
MyTable.First;
while not MyTable.EOF do
begin
MyTable.MyField.AsInteger:=MyFunction(MyTable.MySecondField.AsInteger);
MyTable.Next;
end;
← →
BS (2002-07-18 11:39) [6]Не совсем то, что нужно но все равно спасибо
← →
AngeL B. (2002-07-18 12:18) [7]Если поле результат хранится в базе, то я бы сказал, что оно излишне (ошибка проектирования базы) и его надо изъять (тем более что зависимость только в пределах одной таблицы). Если не храниться, то вычислимые поля никто не отменял.
← →
Val (2002-07-18 12:40) [8]>AngeL B. (18.07.02 12:18)
Если поле результат хранится в базе, то я бы сказал, что оно излишне
спорный вопрос, на больших объемах лучше иметь вычисляемое поле в базе, чем пересчитывать его постоянно для отображения и т.д. И неизвестно из постановки вопроса, выполняет ли автор такой апдейт постоянно или в каких-то случаях, т.е. вычисляемое поле в приложении может и не сгодиться.
← →
AngeL B. (2002-07-18 12:59) [9]
> Val © (18.07.02 12:40)
Если поле храниться в таблице и зависит от поля этой же таблицы, то:
1) нарушение нормальной формы
2) излишний сетевой трафик (для сетевых приложений)
3) потенциальные ошибки по поводу "ой забыли перерасчитать"
Есть конечно исключения, но редки, редки они...
← →
Johnmen (2002-07-18 13:10) [10]>AngeL B. (18.07.02 12:59)
>1) нарушение нормальной формы
Допустимо нарушать правила нормализации, если это приводит к приятным положительным эффектам...:)
>2) излишний сетевой трафик (для сетевых приложений)
Излишки могут быть весьма незначительны...
>3) потенциальные ошибки по поводу "ой забыли перерасчитать"
Это только если вычисляется в приложении.
Ж:-)
← →
AngeL B. (2002-07-18 13:13) [11]
> Johnmen © (18.07.02 13:10)
> Это только если вычисляется в приложении.
Ну так он и просит в приложении. Хотя, да, я уже сгенерил в голове ситуацию, когда вычислимое поле не подойдет ни на стороне сервера ни на стороне клиента.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.08.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c