Советы по Delphi

         

Автоинкрементальные поля и Interbase I


Оказывается, что Interbase триггер "before insert" срабатывает только после того, как запись "запостится" из Delphi приложения. В связи с чем становится невозможным увеличение автоинкрементальных ключевых полей. Есть решение?

Большинство программистов решило эту проблему созданием хранимой процедуры (stored procedure), позволяющей от InterBase получить следующий номер и поместить его в вашу запись посредством метода onBeforePost или onNewRecord. [000559]


Я пытаюсь сгенерировать последовательный ключ для первичной ключевой колонки, но LIBS мне отвечает "nested select is not support in this context." (вложенный выбор не поддерживается в данном контексте.)

Как насчет:

CREATE TRIGGER AUTOINCREMENT FOR MYTABLE BEFORE INSERT AS DECLARE VARIABLE new_key INTEGER; BEGIN UPDATE AUTOKEYS SET KEY_VALUE = KEY_VALUE + 1 WHERE (KEY_ID = "A"); SELECT KEY_VALUE FROM AUTOKEYS WHERE KEY_ID = "A" INTO :new_key; new.my_key_column = new_key; END ^ Steve Koterski (Borland) [000713]



Содержание раздела