![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Задать триггер на ограничение количества записей [D7, FireBird]
REP © (2005-09-16 13:33:00)Добрый день.
Пытаюсь ограничить количество записей в таблице базы данных.
Делаю триггер AFTER INSERT:
CREATE TRIGGER PREDPR_AI0 FOR PREDPR
ACTIVE AFTER INSERT POSITION 0
AS
begin
/* Trigger text */
IF (5<(SELECT Count(*) FROM PREDPR )) then
DELETE FROM predpr where ID=NEW.ID;
end
Пишет: Subselect illegal in this context.
Можно ли как то узнать количество записей в таблице из триггера? И сравнить их с каким то полем в другой таблице.
Естественно можно сделать вставку через хранимую процедуру и там проводить все проверки, но хотелось бы именно через триггер.
Johnmen (2005-09-16 15:47:00) [1]>Desdechado © (16.09.05 15:33) [7]
У меня почему-то есть ощущение, что не привыкнет.
Да и не кормил разжёванным...:)
Desdechado (2005-09-16 15:33:00) [2]Johnmen © (16.09.05 14:17) [5]
зря с ложки кормишь, привыкнет
REP © (16.09.05 13:56) [3]
> Но все равно
А слона-то ты и не заметил. Читай Language Reference, чтоб не месить грязь руками, и других не заставлять приглядываться ...
REP (2005-09-16 14:22:00) [3]
> Johnmen © (16.09.05 14:17) [5]
Спасибо огромное
Johnmen (2005-09-16 14:17:00) [4]
SELECT COUNT(*) FROM PREDPR INTO :YourVariable;
IF (5<YourVariable) then
REP (2005-09-16 13:57:00) [5]и в BEFORE INSERT тоже
REP (2005-09-16 13:56:00) [6]
> Desdechado © (16.09.05 13:42) [2]
Да я понимаю что удалять не надо, это я так попробовать, знаю что надо исключение поднимать. так быстрее показалось. Но все равно если писать
IF (5<(SELECT Count(*) FROM PREDPR )) then
что бы то ни было
ругается на SubSelect
Desdechado (2005-09-16 13:42:00) [7]FireBird - версионник, у него с SELECT'ом из триггеруемой таблицы нормально
а вот синтаксис у автора вообще ни в какие ворота, почитал бы Language Reference, что ли
ibase.ru
и я бы проверку ставил в BEFORE INSERT
и удалять ничего не надо, просто EXCEPTION подыми
Anatoly Podgoretsky (2005-09-16 13:35:00) [8]Многие СУБД запрещают SELECT в тригере, как с этим у FireBird