Форум: "Базы";
Текущий архив: 2012.06.03;
Скачать: [xml.tar.bz2];
ВнизЗаписать 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.004 c