Вниз
Скачать: CL | DM;

Задать триггер на ограничение количества записей   Найти похожие ветки 

 
REP ©   (2005-09-16 13:33) [0]

Добрый день.

Пытаюсь ограничить количество записей в таблице базы данных.

Делаю триггер 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.

Можно ли как то узнать количество записей в таблице из триггера? И сравнить их с каким то полем в другой таблице.

Естественно можно сделать вставку через хранимую процедуру и там проводить все проверки, но хотелось бы именно через триггер.


 
Anatoly Podgoretsky ©   (2005-09-16 13:35) [1]

Многие СУБД запрещают SELECT в тригере, как с этим у FireBird


 
Desdechado ©   (2005-09-16 13:42) [2]

FireBird - версионник, у него с SELECT"ом из триггеруемой таблицы нормально

а вот синтаксис у автора вообще ни в какие ворота, почитал бы Language Reference, что ли
ibase.ru

и я бы проверку ставил в BEFORE INSERT
и удалять ничего не надо, просто EXCEPTION подыми


 
REP ©   (2005-09-16 13:56) [3]


> Desdechado ©   (16.09.05 13:42) [2]

Да я понимаю что удалять не надо, это я так попробовать, знаю что надо исключение поднимать. так быстрее показалось. Но все равно если писать
IF (5<(SELECT Count(*) FROM PREDPR )) then
  что бы то ни было

ругается на SubSelect


 
REP ©   (2005-09-16 13:57) [4]

и в BEFORE INSERT тоже


 
Johnmen ©   (2005-09-16 14:17) [5]

SELECT COUNT(*) FROM PREDPR INTO :YourVariable;
IF (5<YourVariable) then


 
REP ©   (2005-09-16 14:22) [6]


> Johnmen ©   (16.09.05 14:17) [5]

Спасибо огромное


 
Desdechado ©   (2005-09-16 15:33) [7]

Johnmen ©   (16.09.05 14:17) [5]
зря с ложки кормишь, привыкнет

REP ©   (16.09.05 13:56) [3]
> Но все равно
А слона-то ты и не заметил. Читай Language Reference, чтоб не месить грязь руками, и других не заставлять приглядываться ...


 
Johnmen ©   (2005-09-16 15:47) [8]

>Desdechado ©   (16.09.05 15:33) [7]

У меня почему-то есть ощущение, что не привыкнет.
Да и не кормил разжёванным...:)



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
4-1125027100
Irinka
2005-08-26 07:31
2005.10.30
как программно отключать и включать Active Desktop?


2-1128588035
The sound
2005-10-06 12:40
2005.10.30
Добавление записи в фаил


14-1128976426
опрос
2005-10-11 00:33
2005.10.30
что можно почитать про администрирование?


14-1128597016
MBo
2005-10-06 15:10
2005.10.30
О книгах Седжвика


6-1120660294
Gold
2005-07-06 18:31
2005.10.30
IdPOP31.Retrieve - утечка памяти!! ??




   Наверх