Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.08.2012, 13:18   #1
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос Почему может не ставится значение по-умолчанию?

Здравствуйте,
задача такая - если при insert в поле Field1 клиент отправил в БД null, то нужно чтобы был 0.
Делаю поле Field1 так: NUMERIC(5,2) DEFAULT 0
Но почему-то вместо null не подставляется 0.
Как это делать правильно? (без триггеров итп, используя только default value)
DeveloPerchik вне форума Ответить с цитированием
Старый 07.08.2012, 13:20   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

default используется только при вставке если нет явной вставки в поле.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2012, 13:30   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Ты бы хоть уточнил какая СУБД чтоли для начала. Иначе это как пальцем в небо.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 07.08.2012, 13:32   #4
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос

Цитата:
Сообщение от Аватар Посмотреть сообщение
default используется только при вставке если нет явной вставки в поле.
То есть, если я правильно понял - если вставляется null, то подстановка default не используется?

Цитата:
Сообщение от artemavd Посмотреть сообщение
Ты бы хоть уточнил какая СУБД чтоли для начала. Иначе это как пальцем в небо.
Чтоли FB25. Забыл написать.


От artemavd: не надо выкладывать битые ссылки

Последний раз редактировалось artemavd; 07.08.2012 в 13:43.
DeveloPerchik вне форума Ответить с цитированием
Старый 07.08.2012, 13:34   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Мне кажется, что разумнее всего сделать добавление записи через запрос с параметрами. И все. А потом проверять просто параметр на пустоту. Если он пустой, то добавляем в базу 0.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 07.08.2012, 13:38   #6
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
Вопрос

Цитата:
Сообщение от artemavd Посмотреть сообщение
Мне кажется, что разумнее всего сделать добавление записи через запрос с параметрами.
Непонятно о чём речь... это как? можно пример...
DeveloPerchik вне форума Ответить с цитированием
Старый 07.08.2012, 13:40   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
То есть, если я правильно понял - если вставляется null, то подстановка default не используется?
В яблочко
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.08.2012, 13:47   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Непонятно о чём речь... это как? можно пример...
Что именно непонятно? Как использовать параметры в запросе? Ладно, вот, такой пример:
Код:
 if sEdit1.Text <> '' then
 begin
  pFIBQuery1.Close;
  pFIBQuery1.SQL.Clear;
  pFIBQuery1.SQL.Text:='INSERT INTO T_TABLE(POLE1) VALUES(:P)';
  pFIBQuery1.ParamByName('P').Value:=sEdit1.Text; //для примера
  pFIBQuery1.ExecQuery;
  pFIBQuery1.Transaction.Commit;
 end
 else
 begin
  pFIBQuery1.Close;
  pFIBQuery1.SQL.Clear;
  pFIBQuery1.SQL.Text:='INSERT INTO T_TABLE(POLE1) VALUES(:P)';
  pFIBQuery1.ParamByName('P').Value:=0; //для примера
  pFIBQuery1.ExecQuery;
  pFIBQuery1.Transaction.Commit;
 end;
то, что предлагал: проверяю добавляемое значение на пустоту перед добавлением в базу и в результате проверки выполняю тот или иной запрос
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 07.08.2012, 13:47   #9
DeveloPerchik
Пользователь
 
Регистрация: 06.04.2012
Сообщений: 78
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Что именно непонятно? Как использовать параметры в запросе? Ладно, вот, такой пример:
Это ради одного 0? ОМГ :D

Я в следующий раз не буду править в твоих сообщениях текст, который не относится к теме, а просто буду удалять темы и выписывать штрафы!

Последний раз редактировалось artemavd; 07.08.2012 в 13:51.
DeveloPerchik вне форума Ответить с цитированием
Старый 07.08.2012, 13:52   #10
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Я предложил свой вариант, который никак не уменьшит скорость работы программы, но решит такую "проблему". Если не устраивает, то делай своими мыслями. На форуме каждый вправе предложить свое решение. Использовать или нет его - дело каждого.

P.S. Лучше написать на несколько строчек кода больше, но решить задачу быстрее, чем тратить время на форуме, сидя и выбирая из предложенных готовых решений самое красивое.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение значение созданное по умолчанию vlkr Microsoft Office Access 1 14.07.2012 23:35
значение по умолчанию Алек C# (си шарп) 1 20.12.2011 22:23
значение по умолчанию T(h)rasher SQL, базы данных 14 17.04.2011 13:30
какое значение переменной integer по умолчанию? vitaliy1911 Общие вопросы Delphi 11 25.05.2010 14:36
Значение поля по умолчанию alco84 Microsoft Office Access 2 16.02.2010 10:17