Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизКак правильно написать предложение Insert в SQL запрос Найти похожие ветки
← →
Dimon777 © (2006-11-23 11:19) [0]Использую ODAC. В TOraQuery предложение Insert выглядит следующим образом:
INSERT INTO ИмяТаблицы
(Поле1, Поле2, Поле3)
VALUES
(:Поле1, :Поле2, :Поле3)
Вопро. Как правильно написать предложение Insert, чтобы если какое-то поле не заполнено пользователем, добавлялось бы значение по умолчанию? Что-то типа
INSERT INTO ИмяТаблицы
(Поле1, Поле2, Поле3)
VALUES
(:Поле1, :Поле2=0, :Поле3)
← →
Sergey13 © (2006-11-23 11:26) [1]А когда ты присваиваешь значения переменным это нельзя отследить?
← →
clickmaker © (2006-11-23 11:39) [2]а что-то типа isnull(:Поле2, 0) не подойдет?
← →
Dimon777 © (2006-11-23 11:41) [3]Можно, но это неудобно как-то...
В самой базе стоит
create table Имя
(
Поле1 NUMBER(2),
Поле2 NUMBER(1) default 0,
Поле3 NUMBER(1)
Но TOraQuery почему-то игнорирует "default 0" вставляя NULL
← →
clickmaker © (2006-11-23 11:47) [4]
> Но TOraQuery почему-то игнорирует "default 0"
ничего странного. Это работало бы, если бы у тебя в инсерте вообще не фигурировало поле2
← →
Sergey13 © (2006-11-23 11:47) [5]> [3] Dimon777 © (23.11.06 11:41)
Возможно из-за того, что поле есть в запросе. Если бы былоINSERT INTO ИмяТаблицы
(Поле1, Поле3)
VALUES
(:Поле1, :Поле3)
Это бы сработало. Можно в тригере перед инсертом продублировать
If new.Pole2 is null then new.pole2=0
← →
Dimon777 © (2006-11-23 11:48) [6]
> isnull(:Поле2, 0)
Спасибо, навёл на мысль!!!!!!!
Работает
INSERT INTO ИмяТаблицы
(Поле1, Поле2, Поле3)
VALUES
(:Поле1, NVL(:Поле2, 0), :Поле3)
← →
dimon777 © (2006-11-23 11:51) [7]
> Возможно из-за того, что поле есть в запросе. Если бы было
> INSERT INTO ИмяТаблицы
> (Поле1, Поле3)
> VALUES
> (:Поле1, :Поле3)
А вот если исключить поле из запроса, то будет вставлять NULL в любом случае, даже если пользователь вводит какое-то свое значение
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c