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

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

Задать триггер на ограничение количества записей [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


Наверх

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