Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];

Вниз

Тригеры 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-7464
kah68
2003-06-20 16:17
2003.07.03
Изменение курсора мышки при выполнении SQL запроса


3-7320
Aleksandr
2003-06-09 16:31
2003.07.03
Как корректно добавить калькулироемое поле?


7-7730
Piero
2003-04-07 10:25
2003.07.03
Как закрыть чужой exe-шник из своей проги


1-7421
manumba
2003-06-23 11:23
2003.07.03
Профессиональное использование ООП в Delphi.....литература


14-7649
Jimal
2003-06-14 00:30
2003.07.03
Help me ne mogu uze mozgi plavjatsja,skoro s uma soidu!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский