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

Вниз

Тригеры InterBase   Найти похожие ветки 

 
Апач   (2003-06-05 08:16) [0]

В первасиве я писал так

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 при написании тригера обявить переменую, узнать количество записей и выдать пользователю сообщение

Всем спасибо


 
AlexSerp ©   (2003-06-05 09:19) [1]

Пардон, конечно.
Но вообще-то для начала надо документацию почитать.
Переменная - declare variable VAR1 VARCHAR(1);
Какое количество записей тебе нужно?
Триггер стреляет по текущей записи.


 
Апач   (2003-06-05 09:29) [2]

За декларейт спасибо
то что тригер стреляет по одной записи ясно - работает по событию
Я бы хотел узнать как посчитать количество записеи из любои таблицы по любому условию иногда это необходимо
В Первасиве я использовал просто селект и записывал значение в переменную
А документацию читаем тока пока плохо доходит
Извиняюсь конечно :)


 
AlexSerp ©   (2003-06-05 09:41) [3]

Посчитать записи

select coгnt(*) from table
where <conditions>

если все записи, то условие убираешь.

Если посчитать в процедуре/триггере, то

select coгnt(*) from table
where <conditions> into :var;



 
Апач   (2003-06-05 09:43) [4]

ну я так и писал :) тока переменую обявить немог
спасибо, вот за ДЕКЛАРЕЙТ СПАСИБО!


 
Desdechado ©   (2003-06-06 16:44) [5]

вот только триггер в контексте транзакции работает, поэтому rollback в нем (как и в ХП) недопустим


 
kaif ©   (2003-06-07 01:50) [6]

А 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-07 15:16) [7]

ну, print, видимо, это аналог exception в IB



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
8-7559
programmer_kia
2003-03-11 15:49
2003.07.03
конвертирование bitmap из RGB24 в YUY2(YUV422)...help


1-7408
АлеКо
2003-06-23 08:16
2003.07.03
QReport


6-7567
andrew_snk
2003-04-25 23:36
2003.07.03
Определение заголовка сайта


1-7418
Zelius
2003-06-22 20:33
2003.07.03
Как у TPageControl а убить бордер, что бы он не рисовался?


3-7301
jambvi
2003-06-08 17:42
2003.07.03
Программно подключать базу на Access 2002....................