powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сообщение об ошибке в триггере
7 сообщений из 7, страница 1 из 1
Сообщение об ошибке в триггере
    #40060557
pirab41
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

У меня есть две таблички JournalFly и FlyArea (журнал полетов и посадочная площадка)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE JOURNALFLY (
    JOURNALID      INTEGER PRIMARY KEY ,
    DATEARRIVAL    TIMESTAMP,
    DATEDEPARTURE  TIMESTAMP,
    FLYAREAID      INTEGER 
);
 
CREATE TABLE FlyArea (
       FlyAreaID            INTEGER PRIMARY KEY,
       SizeArea             VARCHAR(10)
);



Я создала триггер, который проверяет: если дата прилета вертолёта попала в промежуток стоянки другого воздушного судна, то вертолет который прилетел не может сесть на эту посадочную площадку, где уже стоит воздушное судно (нужно будет указать номер другой площадки)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
CREATE EXCEPTION ErrorFlyArea 'Данная посадочная площадка уже занята';

CREATE OR ALTER TRIGGER FreeFlyArea FOR JournalFly
ACTIVE AFTER INSERT OR UPDATE
AS
DECLARE LFlyAreaID PKFIELD;
BEGIN 
FOR SELECT FlyAreaID FROM JournalFly WHERE NEW.DateArrival>=DateArrival AND NEW.DateArrival<=DateDeparture
INTO :LFlyAreaID
DO
BEGIN
 IF (NEW.FlyAreaID = LFlyAreaID)
  THEN EXCEPTION ErrorFlyArea;
  END
END



Вроде всё работает, но
Если я укажу посадочную площадку, на которой уже стоит воздушное судно, высветится сообщение об ошибке. И после этого, я уже не могу указать никакую площадку (пустую или же которая занята). Постоянно будет всплывать сообщение об ошибке

Помогите, пожалуйста...
...
Рейтинг: 0 / 0
Сообщение об ошибке в триггере
    #40060559
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirab41если дата прилета вертолёта попала в промежуток стоянки другого воздушного судна, то
вертолет который прилетел не может сесть на эту посадочную площадку, где уже стоит
воздушное судно

Может. Взлететь потом уже будет облом, но пассажиров даже не придётся соскребать ложками с
бетона.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Сообщение об ошибке в триггере
    #40060561
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот поэтому я стараюсь не летать.
...
Рейтинг: 0 / 0
Сообщение об ошибке в триггере
    #40060597
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirab41,

для начала поставьте триггер не на AFTER INSERT OR UPDATE, а на BEFORE ....
...
Рейтинг: 0 / 0
Сообщение об ошибке в триггере
    #40060603
a7exander
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirab41,

насчет того что постоянно будет всплывать сообщение об ошибке виновата ваша программа а не БД, ищите что вы там делаете после того как словите исключение, а вот зачем перебирать в триггере все посадочные площадки тогда как вам нужно всего одна совершенно непонятно, лучше NEW.FlyAreaID = LFlyAreaID добавьте в SELECT и выбирайте COUNT(*) и потом если >0 то EXCEPTION
...
Рейтинг: 0 / 0
Сообщение об ошибке в триггере
    #40060667
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pirab41,

Вы хотите, чтобы из триггера открылось диалоговое окно для изменения номера площадки?
...
Рейтинг: 0 / 0
Сообщение об ошибке в триггере
    #40060675
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это в принципе не работоспособно в многопользовательском окружении.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Сообщение об ошибке в триггере
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]