![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тригеры InterBase [D6, IB5.x]
Апач © (2003-06-05 08:16:00)В первасиве я писал так
AFTER DELETE ON VidIzm FOR EACH ROW
BEGIN
DECLARE :x INTEGER;
SELECT COUNT(*) INTO :x FROM SI a WHERE a.vidizm=old.vidizm;
IF (:x>0) THEN
PRINT "Not delete row to SI" ;
ROLLBACK WORK;
END IF;
END;
хотелось быспросить как в InterBase при написании тригера обявить переменую, узнать количество записей и выдать пользователю сообщение
Всем спасибо
Desdechado (2003-06-07 15:16:00) [1]ну, print, видимо, это аналог exception в IB
kaif (2003-06-07 01:50:00) [2]А PRINT там что делает?
Я не знаю, может это как-то в консоли и заработает для IB, но если мне нужно что-то в приложение вернуть, я обычно хранимую процедуру использую с RETURNS:
CREATE PROCEDURE delete_vid_izm(id: integer)
RETURNS(record_count INTEGER)
AS
BEGIN
DELETE FROM delete_vid_izm WHERE id = :id;
SELECT COUNT(*) FROM delete_vid_izm INTO :record_count;
END
И вместо прямого удаления из таблицы использую, скажем вызов этой процедуры
EXECUTE PROCEDURE delete_vid_izm(:id);
Если PRINT что-то в IB делает, дайте знать...
А rollback действительно недопустим.
Desdechado (2003-06-06 16:44:00) [3]вот только триггер в контексте транзакции работает, поэтому rollback в нем (как и в ХП) недопустим
Апач (2003-06-05 09:43:00) [4]ну я так и писал :) тока переменую обявить немог
спасибо, вот за ДЕКЛАРЕЙТ СПАСИБО!
AlexSerp (2003-06-05 09:41:00) [5]Посчитать записи
select coгnt(*) from table
where <conditions>
если все записи, то условие убираешь.
Если посчитать в процедуре/триггере, то
select coгnt(*) from table
where <conditions> into :var;
Апач (2003-06-05 09:29:00) [6]За декларейт спасибо
то что тригер стреляет по одной записи ясно - работает по событию
Я бы хотел узнать как посчитать количество записеи из любои таблицы по любому условию иногда это необходимо
В Первасиве я использовал просто селект и записывал значение в переменную
А документацию читаем тока пока плохо доходит
Извиняюсь конечно :)
AlexSerp (2003-06-05 09:19:00) [7]Пардон, конечно.
Но вообще-то для начала надо документацию почитать.
Переменная -declare variable VAR1 VARCHAR(1);
Какое количество записей тебе нужно?
Триггер стреляет по текущей записи.