Форум программистов, компьютерный форум, киберфорум
Firebird/InterBase
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 29.04.2014
Сообщений: 55

Как правильно написать запрос в триггере?

23.10.2015, 10:42. Показов 1253. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, делаю лабыЮ и вот возник вопрос, который не получается прогуглить...

Есть таблица с соревнованиями в разные годы проведения. Нужно создать триггер BEFORE INSERT, который бы проверял количество проведённых соревнований в этот год, и если их >5 то не давал бы вставить новую строку, а, например, выдавал бы сообщение об ошибке. Я написал так:

SQL
1
2
3
4
5
6
7
8
9
SET TERM !! ;
CREATE TRIGGER TR_NO_MORE_5 FOR SOREVNOVANIJA
BEFORE INSERT AS
BEGIN
 IF ( 4 < SELECT COUNT (Y_SOR) FROM SOREVNOVANIJA WHERE Y_SOR=NEW.Y_SOR )
  THEN
      EXCEPTION NOMORE5; 
END!!
SET TERM ; !!
Где Y_SOR год проведения соревнования... Подскажите плз, что я сделал не так:

вот ошибка:

Statement failed, SQLSTATE = 42000
Dynamic SQL Error
-SQL error code = -104
-Token unknown - line 4, column 11
-SELECT
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2015, 10:42
Ответы с готовыми решениями:

Написать запрос в триггере
привет, всем активным участникам этого форума. помогите, пожалуйста, написать запрос на SQL. создать триггер Update, котрый работал...

Как правильно прервать вставку в триггере?
Всем привет! в триггере делаю такую проверку: IF (NEW.Building &lt;&gt; 'A1' OR NEW.Building &lt;&gt; 'A2') THEN EXCEPTION...

как правильно написать запрос
в базе данных есть таблица `ID`, `REGION_ID`, `LID`, `NAME`, `SHORT_NAME` она уже заполнена данными 163, 82, ru, Adygeya Resp,...

4
Безумец
 Аватар для mrtmaxxx
48 / 48 / 12
Регистрация: 06.02.2014
Сообщений: 214
23.10.2015, 11:53
Лучший ответ Сообщение было отмечено SevLenin как решение

Решение

SQL
1
2
3
4
5
6
7
8
9
10
11
SET TERM !! ;
CREATE TRIGGER TR_NO_MORE_5 FOR SOREVNOVANIJA
BEFORE INSERT AS
DECLARE variable i INTEGER
BEGIN
SELECT COUNT (Y_SOR) FROM SOREVNOVANIJA WHERE Y_SOR=NEW.Y_SOR INTO :I;
 IF (i>4)
  THEN
      EXCEPTION NOMORE5; 
END!!
SET TERM ; !!
1
1 / 1 / 0
Регистрация: 29.04.2014
Сообщений: 55
23.10.2015, 11:56  [ТС]
Спасибо, вроди как пошло, буду тестить(правда добавил зпт. после объявления переменной)
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
23.10.2015, 13:35
Цитата Сообщение от SevLenin Посмотреть сообщение
Подскажите плз, что я сделал не так
Ошибка в том, что в строке 5 подзапрос следовало обернуть в скобки.
1
1 / 1 / 0
Регистрация: 29.04.2014
Сообщений: 55
23.10.2015, 13:36  [ТС]
спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2015, 13:36
Помогаю со студенческими работами здесь

Как правильно написать запрос?
Необходимо при создании записи в одной таблице добавлять запись в другую таблицу по определённому правилу. При удалении или обновлении...

Как правильно написать запрос
Очень нужна помощь с запросом. Есть товар 30767 для которого рассчитывается расчетная цена select top 1 @Rasch=...

Как правильно написать запрос
Привет, Пишу впервые сложный запрос (по крайней мере для меня) и так: Есть таблица КОД Имя Адрес Дата 123 Иван...

Как правильно написать запрос?
В некоторой таблице есть поле &quot;field&quot;. Как правильно вывести все записи, где значение поля &quot;field&quot; содержит строку (либо...

Как правильно написать запрос?
Здравствуйте, как правильно написать следующий запрос? fDM.Qry1.SQL.Add('Select * FROM Склад Where кол_штук &lt; кол_мин_штук;'); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru