Вниз
Скачать: CL | DM;

Как правильно написать предложение 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.03 c
15-1164110366
daser
2006-11-21 14:59
2006.12.10
Как отправить e-mail, зная SMTP-сервер и логин на почт. сервере?


2-1164199029
Виктор1
2006-11-22 15:37
2006.12.10
Получение компонентов окна


15-1163767937
Krants
2006-11-17 15:52
2006.12.10
Быть или не быть?


2-1164040438
Vasiliy
2006-11-20 19:33
2006.12.10
Как обработать WM_NCMOUSEMOVE на не клиентской области?


2-1164123200
Уважаемый Ламер
2006-11-21 18:33
2006.12.10
Запись данных в таблицу




   Наверх