![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Значения по умолчнию [IB6.x, Yaffil]
Cranium © (2003-07-08 20:15:00)Не подставляются значения по умолчанию в поля где они опредлены вот к примеру таблица....
CREATE TABLE GROUP_AND_USER (
ID_OBJECT INTEGER NOT NULL,
ID_PARENT INTEGER,
COUNT_CHILDREN INTEGER DEFAULT 0
);
Что характерно из моего приложения не подставляются, а из IBexpert"а пожалуйста.... Использую IDX IBDataSet.... В приложении при вставке COUNT_CHILDREN ни чего не присваивается...
KDS (2003-07-10 16:44:00) [1]>COUNT_CHILDREN INTEGER DEFAULT 0
ЧТОБЫ ПОДСТАВЛЯЛОСЬ НАДО ДОПИСАТЬ not nullв конце строки
всего лишь, а не городить триггеры и прочее
Zacho (2003-07-09 08:15:00) [2]
> Zacho © (09.07.03 08:05)
Естественно, слово TABLE в запросах лишнее :) Название таблицы я просто скопировал, и не обратил внимание, что туда вкралось TABLE :-))
Zacho (2003-07-09 08:05:00) [3]Дело в том, что default значение подставляется только тогда, когда запрос имеет вид
INSERT INTO TABLE GROUP_AND_USER (ID_OBJECT,ID_PARENT) VALUES (:ID_OBJECT, :ID_PARENT)В твоем же случае происходит выполнение запросаINSERT INTO TABLE GROUP_AND_USER (ID_OBJECT,ID_PARENT, COUNT_CHILDREN) VALUES (:ID_OBJECT, :ID_PARENT, :COUNT_CHILDREN), где :COUNT_CHILDREN=NULL. Поэтому после выполнения этого запроса в поле COUNT_CHILDREN оказывается NULL.
Решить эту проблему можно несколькими способами:
1. Написать триггер BEFORE INSERT следующего вида:
CREATE TRIGGER GROUP_AND_USER_BI0 FOR GROUP_AND_USER
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.COUNT_CHILDREN IS NULL) THEN NEW.COUNT_CHILDREN=0;
END
2. В обработчике события OnNewRecord датасета присваивать 0 этому полю.
Ну и еще можно варианты придумать, эти просто первые, пришедшие мне в голову.