| 
| 
 | Вопрос # 1 455/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!вопрос по IB
 хочу создать таблицу в которой при добавлении новой записи констраинт котролировал чтобы дата в новой записе была больше даты предидушых записей где значение поля id_tex совпадает
 прошу обратить внимание на
 constraint check_old
 см приложение
 оно неправильно работает
 Приложение:Переключить в обычный режим 		create domain id_oper as integer check (value>0); 		create generator id_oper; 		create table oper			(id id_oper not null,			id_tex integer not null,			in_num integer,			date_oper date not null,			id_dep integer not null,			op_type char(1) CHARACTER SET WIN1251 not null COLLATE PXW_CYRL,						otvet varchar(30) CHARACTER SET WIN1251 COLLATE PXW_CYRL, 						mem BLOB SUB_TYPE 1 CHARACTER SET WIN1251 COLLATE PXW_CYRL, 			primary key (id),			CONSTRAINT con_in_num CHECK(in_num = 			(SELECT tex.in_num FROM tex WHERE oper.id_tex = tex.id)),			CONSTRAINT check_old CHECK(new.date_oper > 			(SELECT max(date_oper) FROM oper WHERE (id_tex = NEW.id_tex) and (id<>new.id))),						foreign key(id_tex) references tex(id),			foreign key(in_num) references tex(in_num),			foreign key(id_dep) references dep(id));
|  |   Вопрос задал: Р.А. (статус: Посетитель)Вопрос отправлен: 28 марта 2008, 19:48
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович Здравствуйте, Раджабов Амин!на первый взгляд всё нормально. Если не работает - попробуйте перенести проверку в before insert триггер.
 
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 31 марта 2008, 17:04; участников в обсуждении: 1. 
|   | Р.А. (статус: Посетитель), 31 марта 2008, 17:04 [#1]:Спасибо помогла добавил один триггер как писал 
 Помфюк Владимир Степанович
 
 CREATE TRIGGER check_old FOR oper
 ACTIVE
 BEFORE insert
 as
 DECLARE VARIABLE last_date date;
 begin
 SELECT max(date_oper) FROM oper WHERE (id_tex = NEW.id_tex) into last_date;
 if (new.date_oper < last_date)
 then EXCEPTION bad_date_oper;
 END;
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |