![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как правильно написать предложение Insert в SQL запрос [D7, XP]
Dimon777 © (2006-11-23 11:19:00)Использую ODAC. В TOraQuery предложение Insert выглядит следующим образом:
INSERT INTO ИмяТаблицы
(Поле1, Поле2, Поле3)
VALUES
(:Поле1, :Поле2, :Поле3)
Вопро. Как правильно написать предложение Insert, чтобы если какое-то поле не заполнено пользователем, добавлялось бы значение по умолчанию? Что-то типа
INSERT INTO ИмяТаблицы
(Поле1, Поле2, Поле3)
VALUES
(:Поле1, :Поле2 =0, :Поле3)
dimon777 (2006-11-23 11:51:00) [1]
> Возможно из-за того, что поле есть в запросе. Если бы было
> INSERT INTO ИмяТаблицы
> (Поле1, Поле3)
> VALUES
> (:Поле1, :Поле3)
А вот если исключить поле из запроса, то будет вставлять NULL в любом случае, даже если пользователь вводит какое-то свое значение
Dimon777 (2006-11-23 11:48:00) [2]
> isnull(:Поле2, 0)
Спасибо, навёл на мысль!!!!!!!
Работает
INSERT INTO ИмяТаблицы
(Поле1, Поле2, Поле3)
VALUES
(:Поле1, NVL(:Поле2, 0), :Поле3)
clickmaker (2006-11-23 11:47:00) [3]
> Но TOraQuery почему-то игнорирует "default 0"
ничего странного. Это работало бы, если бы у тебя в инсерте вообще не фигурировало поле2
Sergey13 (2006-11-23 11:47:00) [4]> [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:41:00) [5]Можно, но это неудобно как-то...
В самой базе стоит
create table Имя
(
Поле1 NUMBER(2),
Поле2 NUMBER(1) default 0,
Поле3 NUMBER(1)
Но TOraQuery почему-то игнорирует "default 0" вставляя NULL
clickmaker (2006-11-23 11:39:00) [6]а что-то типа isnull(:Поле2, 0) не подойдет?
Sergey13 (2006-11-23 11:26:00) [7]А когда ты присваиваешь значения переменным это нельзя отследить?