Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.25;
Скачать: CL | DM;

Вниз

Или я чего-то не понимаю, или Firebird глючит   Найти похожие ветки 

 
Андрей Жук ©   (2005-08-16 12:25) [0]

Такой вот запрос
UPDATE APP_FINSUMMARY SET apr=6 545.00 where LINE_ID=157 and YEAR_ID=2005 and VER_ID=2 and PEOPLE_ID=0 and KONTR_ID=0
думаете, он обновит только записи where LINE_ID=157 and YEAR_ID=2005 and VER_ID=2 and PEOPLE_ID=0 and KONTR_ID=0? Нифига. Он обновит все записи. Я понимаю, что 545 - тут лишнее, но мне кажется что подобная обработка запроса - абсурдна.


 
Anatoly Podgoretsky ©   (2005-08-16 12:31) [1]

Это плохо что он тебя не отругал за это SET apr=6 545.00
Как прикажешь понимать такое?


 
Андрей Жук ©   (2005-08-16 12:33) [2]

Тут моя ошибка, что число 6545 записалось как 6 545. Это я понимаю. Но почему запрос выполняется, да еще абсолютно неверно. Условие where вообще не проверяется. Лучше уж получать явную ошибку, а не такое.


 
Anatoly Podgoretsky ©   (2005-08-16 12:47) [3]

Это не число  6545, а два числа и я (интерпритатор выражения) в раздумьи, что же ты такое хотел мне сказать.
А может ты перекрыл обработку ошибок. Попробуй выполнить это вне твоей программы, может тебе что то говорят.


 
Андрей Жук ©   (2005-08-16 12:52) [4]

проверял и в IBExpert. То же самое.


 
Sergey13 ©   (2005-08-16 12:53) [5]

2Андрей Жук ©   (16.08.05 12:25)
>Он обновит все записи
А чем обновит то? 6 или 6545? Интересно просто.


 
Anatoly Podgoretsky ©   (2005-08-16 13:21) [6]

Если более менее это соответствующий стандартам сервер, то запишет 6, в противоположном случае, а ну его в топку.


 
Sergey13 ©   (2005-08-16 13:31) [7]

Попробовал у себя смоделировать такое в ИБЭксперте. Заругалось на "вторую часть числа". Говорит Token unknown. ФБ Эмб 1.5.1.4481


 
Anatoly Podgoretsky ©   (2005-08-16 13:35) [8]

Sergey13 ©   (16.08.05 13:31) [7]
Я вот тоже думаю, что он как то заблокировал ошибки, например настройками сервера, во многих серверах такое возможно.


 
Андрей Жук ©   (2005-08-16 14:24) [9]

Мистика какая-то...
Пробую
UPDATE APP_FINSUMMARY SET apr=6 545 where LINE_ID=157 and YEAR_ID=2005 and VER_ID=2 and PEOPLE_ID=0 and KONTR_ID=0;

Нормально
Пробую
update app_plateg a set a.plat_sum=3 44 where a.plat_id=105;

Token unknown


 
Андрей Жук ©   (2005-08-16 14:33) [10]

Попробуй создать базу такого вида

/******************************************************************************/
/****         Generated by IBExpert 2005.06.07 16.08.2005 13:29:50         ****/
/******************************************************************************/

SET SQL DIALECT 3;

SET NAMES WIN1251;

CREATE DATABASE "C:\Temp\Temp.fdb"
USER "SYSDBA" PASSWORD "masterkey"
PAGE_SIZE 16384
DEFAULT CHARACTER SET WIN1251;

/******************************************************************************/
/****                               Domains                                ****/
/******************************************************************************/

CREATE DOMAIN IDENTIFIER AS
INTEGER
NOT NULL;

CREATE DOMAIN MONEY AS
DOUBLE PRECISION;

/******************************************************************************/
/****                                Tables                                ****/
/******************************************************************************/

CREATE TABLE APP_FINSUMMARY (
   VER_ID     IDENTIFIER NOT NULL,
   YEAR_ID    IDENTIFIER NOT NULL,
   LINE_ID    IDENTIFIER NOT NULL,
   PEOPLE_ID  IDENTIFIER NOT NULL,
   KONTR_ID   IDENTIFIER NOT NULL,
   JAN        MONEY,
   FEB        MONEY,
   MAR        MONEY,
   APR        MONEY,
   MAY        MONEY,
   JUN        MONEY,
   JUL        MONEY,
   AUG        MONEY,
   SEP        MONEY,
   OCT        MONEY,
   NOV        MONEY,
   "DEC"      MONEY,
   Q1         COMPUTED BY (coalesce(jan,0)+coalesce(feb,0)+coalesce(mar,0)),
   Q2         COMPUTED BY (coalesce(apr,0)+coalesce(may,0)+coalesce(jun,0)),
   Q3         COMPUTED BY (coalesce(jul,0)+coalesce(aug,0)+coalesce(sep,0)),
   Q4         COMPUTED BY (coalesce(oct,0)+coalesce(nov,0)+coalesce("DEC",0)),
   SY1        COMPUTED BY (Q1+Q2),
   SY2        COMPUTED BY (Q3+Q4),
   Y          COMPUTED BY (SY1+SY2)
);



Страницы: 1 вся ветка

Текущий архив: 2005.09.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.052 c
14-1125399088
Игорь Шевченко
2005-08-30 14:51
2005.09.25
Читать. Просветляться.


3-1123866790
NikNet
2005-08-12 21:13
2005.09.25
Что такое CASE система?


4-1122545484
ingine
2005-07-28 14:11
2005.09.25
Проблема с потоками


8-1114443704
syLAX
2005-04-25 19:41
2005.09.25
захват/воспроизведение/кодирование видео


4-1122893373
integery
2005-08-01 14:49
2005.09.25
как сапустить свою програмку так как ето делаєт Scandisk