Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Creating TRIGGER (FireBird, QuickDesk) [D6, IB6.x, FireBird]


Страницы:   1 2

Dimedrol ©   (2002-07-17 18:55:00) 

Коллеги, помогите с сабжем пожалуйста...
Работаю с EMS QuickDesk 2.7.0.1

Есть моя таблица

CREATE TABLE ARTICLES (
ID INTEGER NOT NULL,
PID INTEGER DEFAULT 0,
NUM NUMERIC (5, 2) DEFAULT 0 CHECK (NUM BETWEEN -256 AND 256),
CRC COMPUTED BY (PID + ID * NUM),
STATUS CHAR(2) CHECK (STATUS IN ("on", "off")),
AUTHOR CHAR (64) NOT NULL UNIQUE,
HEADER VARCHAR (128) NOT NULL UNIQUE,
LEAD VARCHAR (512) DEFAULT "No lead",
INSERTED TIMESTAMP DEFAULT "NOW",
PRIMARY KEY (ID)
);


К ней генератор для авто-инкремента...

CREATE GENERATOR GEN1;
COMMIT;
SET GENERATOR GEN1 TO 0; (или 1)
COMMIT;

Пока все ОК. Создается, и т.п...

Потом, собссно, делаю триггер -

CREATE TRIGGER ART_INC FOR ARTICLES ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
IF (articles.id is NULL) THEN articles.id= GEN_ID(GEN1, 1);
END;


Так мне этот QuickDesk и говорит, типа
" Unknown variable - id"
на втором, выделенном " articles.id"
Главное, на первом не ругается, а на втором - ругается.


Я уж и кейс менял везде, и в 1 строчку все написать пробовал, и перегружал прогу,-
нифига не помогает.
А попробовал этоже самое проделать через ISQL
под Линухом моим, где сервак-то и стоит - все прошло с пол-пинка ! 8-\
Там тоже наваял все это в 1 строчку, просто ентер-ы убил...

QuickDesk может показывать SQL стейтменты всех операций, - типа
SQL-вид. Это круто, но !
беру копирую оттуда код создания этого триггера,
исполняю в нем же, и... нифига ! не пашет! 888-\


Что бы это могло быть...


PS
Я ваще люблю конечно консоль на линухе,
но что же с ГУИ твориться-то , а ?!


Val   (2002-07-17 19:22:00) [21]

сорри, в IB перед old и new двоеточие не ставится


Val   (2002-07-17 19:08:00) [22]

А так?
CREATE TRIGGER ART_INC FOR ARTICLES ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
IF (:old.id is NULL) THEN :new.id = GEN_ID(GEN1, 1);
END;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо