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

Вниз

Записать 0 в поле   Найти похожие ветки 

 
O.O   (2010-06-10 12:17) [0]

Ситуация такая, в таблице есть поле формата DOUBLE PRECISION и в нём допускаются значение Null
Поставить полю параметр not Null уже нельзя.
При записи 0 в поле туда записывается Null
Каим образом можно записать туда 0 а не Null ?


 
Amoeba_   (2010-06-10 12:29) [1]

СУБД какая?


 
turbouser ©   (2010-06-10 12:29) [2]

в триггере new.твое_поле = COALESCE(new.твое_поле,0)


 
Anatoly Podgoretsky ©   (2010-06-10 13:00) [3]


> При записи 0 в поле туда записывается Null

У тебя или ошибка в запросе, или в характеристиках поля, например злые тригера.


 
Sergey13 ©   (2010-06-10 13:13) [4]

> [0] O.O   (10.06.10 12:17)
> Поставить полю параметр not Null уже нельзя.

Почему? Проапдейтить таблицу set field=0 where field is null и добавить констрейнт.

> При записи 0 в поле туда записывается Null
Скорее всего ты в гриде видишь этот ноль. А это еще ничего не значит.


 
O.O   (2010-06-10 17:05) [5]


> Amoeba_   (10.06.10 12:29) [1]
> СУБД какая?


FB 2.0


Anatoly Podgoretsky ©   (10.06.10 13:00) [3]
>У тебя или ошибка в запросе, или в характеристиках поля, например злые тригера.


Запрос такой приблизительно:

   if QRead1.Active Then QRead1.Close;
   QRead1.SQL.Clear;
   QRead1.SQL.Append("SELECT GEN_ID(MY_GEN, 1) FROM RDB$DATABASE");
   QRead1.Prepare;
   QRead1.Open;
   My_ID := QRead1.FieldByName("GEN_ID").AsInteger;
   QRead1.Close;

   if QWrite1.Active then QWrite1.Close;
   QWrite1.SQL.Clear;
   QWrite1.SQL.Append("INSERT INTO TABLE (ID, FIELD) VALUES (:ID, :Data");
   QWrite1.ParamByName("ID").AsInteger := My_ID;
   QWrite1.ParamByName("Data").AsFloat := 0;
   QWrite1.Prepare;
   QWrite1.ExecSQL;


 
O.O   (2010-06-10 17:13) [6]


> Sergey13 ©   (10.06.10 13:13) [4]
> > [0] O.O   (10.06.10 12:17)> Поставить полю параметр not
> Null уже нельзя.Почему? Проапдейтить таблицу set field=0
> where field is null и добавить констрейнт.>
По крайней мере IBExpert этого делать не хочет. Я обычно пытаюсь сделать изменения в нём, и если они проходят - уверенно его скрипт использую в программе для изменения в БД для обновления версий.

>При записи 0  в поле туда записывается Null
>Скорее всего ты в гриде видишь
> этот ноль. А это еще ничего не значит.

Нет, не в гриде. Этот Null сказывается в вычисляемых полях, результат которых тоже Null если в данных для расчёта есть значение Null


 
Sergey13 ©   (2010-06-10 17:50) [7]

> [6] O.O   (10.06.10 17:13)
> По крайней мере IBExpert этого делать не хочет.

Так и пишет: "Не хочу этого делать, хоть сноси меня"?


 
O.O   (2010-06-10 17:57) [8]


> Sergey13 ©   (10.06.10 17:50) [7]
> > [6] O.O   (10.06.10 17:13)> По крайней мере IBExpert этого
> делать не хочет.Так и пишет: "Не хочу этого делать, хоть
> сноси меня"?


:)))
Нет, не так. Просто не даёт изменять параметры этого поля


 
Anatoly Podgoretsky ©   (2010-06-10 19:20) [9]

> O.O  (10.06.2010 12:17:00)  [0]

Тебе уже ответили, ты проверил варианты?


 
O.O   (2010-06-10 19:35) [10]

Да всё проверяю и ничего не выходит !
У таблицы есть триггер такой:

   if (new.id is null) then
   new.id = gen_id(my_gen, 1);


Позволяет либо автоматом очередной ID вставлять либо свой id задать
Работает без проблем !

Пытаюсь тоже сделать с полем которое мне нужно и записать туда 0 - не выходит

 if (new.field is null) then new.field = 0;

Может туплю уже или глаза замылились, но ничё не выходит !  :(


 
O.O   (2010-06-10 19:39) [11]

триггер before


 
O.O   (2010-06-11 06:24) [12]

Извиняюсь перед всеми за беспокойство, сёдня утром легко нашёл причину.
0 записывается без всяких доп примочек, но после записи далее по алгоритму программы вызывается ХП в которой я сам же написал чтоб нулевое значение обращать в Null, и всё это в одной транзакции :)
От оно чё, от оно как бывает када память сбоит !



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

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

Наверх




Память: 0.49 MB
Время: 0.01 c
2-1327746260
Festil
2012-01-28 14:24
2012.06.03
Динамические TButton, определение нажатия.


15-1328085629
Faceless
2012-02-01 12:40
2012.06.03
Настройки Delphi7


15-1328276920
Дмитрий
2012-02-03 17:48
2012.06.03
Разработка платного приложения


1-1294084277
TStas
2011-01-03 22:51
2012.06.03
Как получить размер экрана в дюймах или см?


15-1328291750
Dimka Maslov
2012-02-03 21:55
2012.06.03
Про синхронизацию