Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Проблемма с тригером в IB.   Найти похожие ветки 

 
Asail   (2006-07-11 13:26) [0]

Есть тестовая таблица NEW_TABLE с двумя полями:
ID INTEGER (PRIMARY KEY);
NAME CHAR(20);

Создал следующий тригер:

CREATE TRIGGER NEW_TABLE_BI0 FOR NEW_TABLE
ACTIVE BEFORE INSERT POSITION 0
AS
declare variable M integer;
begin
if ("id" IS NULL) then
 begin
   SELECT Max("ID") FROM NEW_TABLE INTO M;
   new.ID = M + 1;
 end
end


Идея в том, что ID может выставляться как в ручную, так и автомат. с помощью тригера на 1 больше максимального (поэтому генератор ИМХО не поможет).

Но при, например, запросе
INSERT INTO NEW_TABLE (NAME) Values("TEST");
получаю Validation Error на поле ID.

Как сие можно решить?


 
DrPass ©   (2006-07-11 13:29) [1]

if (new."id" IS NULL) then


 
DrPass ©   (2006-07-11 13:31) [2]

А вообще, стремный это способ для многопользовательской БД
SELECT Max("ID") FROM NEW_TABLE INTO M;


 
Desdechado ©   (2006-07-11 13:37) [3]

Не стремный, а неприемлемый в принципе!
Для суррогатного ключа нет совершенно никакой разницы,  дырками он или нет. Пользователь его все равно не видит.


 
Asail   (2006-07-11 13:40) [4]

Кстати, new."ID" не хочет, хочет new.ID.
Теперь получаю - Invalid modify request. conversion error from string "ID".

А вот так заработало:

AS
declare variable C integer;
begin
if (new.ID IS NULL) then
 begin
   SELECT Max(T.ID) FROM NEW_TABLE T INTO C;
   new.ID = C + 1;
 end
end


P.s. А чем стремный? И как лучше?
P.p.s. А ключ этот не суррогатный. Поэтому и введена возможность как ручного (из приложения) так и авт. ввода значения.


 
Asail   (2006-07-11 13:41) [5]

Е
> Для суррогатного ключа нет совершенно никакой разницы,  
> дырками он или нет. Пользователь его все равно не видит.
>

Так, конечно генератор !!!


 
Johnmen ©   (2006-07-11 13:43) [6]

Этот способ является всеобщенеприменимым.
Читать http://www.ibase.ru/devinfo/generator.htm
и всё остальное на сайте...



Страницы: 1 вся ветка

Текущий архив: 2006.09.17;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.051 c
2-1156837231
0bsid
2006-08-29 11:40
2006.09.17
как изменить региональные настройки в программе


3-1152705652
MJShvedov
2006-07-12 16:00
2006.09.17
Можно ли редактировать таблицу после объединения?


1-1155025352
SamProf
2006-08-08 12:22
2006.09.17
Как открыть свойства файла на ftp


1-1154613964
Bleed
2006-08-03 18:06
2006.09.17
Castalia 4 vs Delphi 2006, помогите ...


2-1156403821
moor38
2006-08-24 11:17
2006.09.17
Как зная координаты ячейки в StringGrid узнать цвет ячейки?