![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему вставляются пустые поля? [D7, FireBird 2.0]
macrodens © (2010-02-01 16:15:00)Всем доброго времени суток.
Работаю с Firebird 2.0
Через IBExpert создал базу и в ней табличку с полями
ID (integer) - not null autoinc (тригер)
Name (varchar(96) - not null
Pole1 (varchar(96)
если я в IBExpert пытаюсь добавить запись не заполнив поле Name - все ок - срабатывет исключение,
однако при выполнении SQL запроса через компоненты ADO или IBX запись с пустым полем спокойно вставляется, а в IBExpert потом при редактировании этой записи (поле Name не трогаем) исключение уже не возникает.
Подскажите почему все-таки вставляются записи с пустыми полями при not null и как сделать что бы обработка все же происходила?
Пробовал спросить у гугля и яндекса, увидел только вопрос с похожей ситуацией в MySQL.
macrodens (2010-02-01 18:06:00) [21]пришлось написать тригер по инсерту и апдейту и там проверять...
macrodens (2010-02-01 17:32:00) [22]ан нет не заработало.... :-(
macrodens (2010-02-01 17:10:00) [23]поставил default=null и все заработало!!!
macrodens (2010-02-01 17:06:00) [24]to Ega23 © (01.02.10 16:57) [6]
проверка все равно не осуществляется
macrodens (2010-02-01 16:59:00) [25]Код запроса в студию.
adoconnection1.BeginTrans;
with ADOQuery1 do
begin
SQL.clear;
SQL.add('INSERT INTO MYTABLE (NAME, POLE1) VALUES (:C1, :C2)');
Parameters.ParamValues['c1;c2;']:=VarArrayOf(Edit1.test, Edit2.text);
ExecSQL;
end;
adoconnection1.CommitTrans;
запрос проходит и запись вставляется даже при Edit1.text=''
если вместо него указать null, то исключение срабатывает.
Ega23 (2010-02-01 16:57:00) [26]
> Мне нужно что бы при вставке записи осуществлялась проверка
> поля, что оно не пустое, и желательно что бы проверку осуществлял
> сервер базы данных.
Create table test (fld varchar(32) not null default '');
Ega23 (2010-02-01 16:56:00) [27]
> Единственное пока что я понял, что пустая строка ('') не
> равна null
Именно так. По крайней мере - в FireBird.
macrodens (2010-02-01 16:52:00) [28]И что даст это значение по умолчанию?
Мне нужно что бы при вставке записи осуществлялась проверка поля, что оно не пустое, и желательно что бы проверку осуществлял сервер базы данных.
Единственное пока что я понял, что пустая строка ('') не равна null
12 (2010-02-01 16:48:00) [29]Во. Спасибо.
хм..
>> почему все-таки вставляются записи с пустыми полями при not null
прикольно еще тут написано
http://alexey-rouban.livejournal.com/11984.html
дома потестю..
Ega23 (2010-02-01 16:47:00) [30]
> однако при выполнении SQL запроса через компоненты ADO или
> IBX запись с пустым полем спокойно вставляется
Код запроса в студию.
Diplomat (2010-02-01 16:41:00) [31]По видимому в поле Name, должно быть указано значение по умолчанию.