powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / PL/SQL trigger
9 сообщений из 9, страница 1 из 1
PL/SQL trigger
    #38088807
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нашел темы по PL\SQL На форуме решил написать там, где и учусь работать.
Такая проблема. Имеется таблица " Список операций в больнице", в котором 1й столбец это "Дата операции" а 2й столбец это " Номер бригаты" Надо написать триггер , который бы проверял один факт: в один день не могут работать сразу 2 бригады, т.е. несколько операций одна бригада делать может в один день. а несколько бригад(больше одной) в один день не могут(как бы просто 1 бригада и работает в 1 день) В программировании только начал разбираться поэтому плохо пока строю алгоритмы и тем более пишу. Подсказали что надо с помощью курсоров делать, но всё равно пока безрезультатно всё =( Ири нарушении условия этого должно записывать просто в таблицу в какую нибудь в ячейку например "Ошибка!Другая Бригада уже работает"! Помогите, кто шарит, прошу=( Заранее спасибо!!!
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089229
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHeLEST1Подсказали что надо с помощью курсоров делатьНаврали. Надо сделать один селект, который будет возвращать количество работающих бригад.
Код: sql
1.
2.
3.
select count(*)
  into team_count
  from <что у вас там есть>

Потом анализируете переменную team_count. Если 0 - операционная свободна, заходите, кто хотите, берите, что хотите оперируйте на здоровье. Если 1 - занято, если 2 и больше - караул, включайте сирену, вызывайте спецназ...
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089333
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если честно не совсем понял как количество поможет мне) Мне жыж надо проверить как бы факт что если такая дата используется уже то только с тем номером бригады которая в эту таблицу уже добавлена, а не новая бригада.
Т.е. например
....Дата ..... №бригады
10,10,12 .......... 1
то если добавлю insert'ом дату 10.10.12 и №бригады 2 то выдаст ошибку что в данную дату уже работает бригада 1.
Или я просто как то не так трактую ваше сообщение) Прошу объяснить неучу))
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089629
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHeLEST1Если честно не совсем понял как количество поможет мне) Мне жыж надо проверить как бы факт что если такая дата используется уже то только с тем номером бригады которая в эту таблицу уже добавлена, а не новая бригада.
Т.е. например
....Дата ..... №бригады
10,10,12 .......... 1
то если добавлю insert'ом дату 10.10.12 и №бригады 2 то выдаст ошибку что в данную дату уже работает бригада 1.
Или я просто как то не так трактую ваше сообщение) Прошу объяснить неучу))Запрос, возвращающий количество строк, в которых указана нужная бригада и нужная дата. Так понятно? Ну или как еще объяснить? Ну или хотя бы структуру таблицы приведите...
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089639
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне необходима проверка именно "Если такая дата есть, то номер бригады другой кроме той который указан уже в таблице использоваться не должен". у меня не список текущих а как бы вообще например дат на месяц. Я немного неправильно выразился. Ттут будет именно как бы график работы операций на неделю например. Т.е. список дат, на каждый день, но номер бригады указывается только один, т.е. если 1 число поставлено было с бригадой № 1, то другая бригада в этот день не может оперировать.
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089739
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин...
Окей.
Таблица SCHEDULE
Столбцы: oper_date, team_no
Код внутри триггера на insert...
Запрос:
Код: sql
1.
2.
3.
4.
5.
select count(*)
  into team_count
  from schedule
 where oper_date = trunc(:NEW.date)
   and team_no = :NEW.team_id;

После выполнения в переменной team_count будет 0 если свободно (можно вставлять строку) и 1 если занято (нельзя вставлять строку). Если и это непонятно, то займитесь танцами что ли вместо программирования...
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089752
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rockclimberБлин...
Окей.
Таблица SCHEDULE
Столбцы: oper_date, team_no
Код внутри триггера на insert...
Запрос:
Код: sql
1.
2.
3.
4.
5.
select count(*)
  into team_count
  from schedule
 where oper_date = trunc(:NEW.date)
   and team_no = :NEW.team_id;

После выполнения в переменной team_count будет 0 если свободно (можно вставлять строку) и 1 если занято (нельзя вставлять строку). Если и это непонятно, то займитесь танцами что ли вместо программирования...То есть не так. Сначала проверяем
Код: sql
1.
2.
3.
4.
select count(*)
  into team_count
  from schedule
 where oper_date = trunc(:NEW.date);

Если 0 - то вообще свободно, если 1 - то есть какая-то бригада. А код из прошлого поста поможет понять, какая именно это бригада. Если 0 - то другая, если 1 - то та же самая...
А вообще дурацкая какая-то система...

Можно вообще одним запросом проверить оба условия:
Код: sql
1.
2.
3.
4.
5.
6.
7.
select count(*), sum(this_team)
  into team_count, this_team_count
  from (
        select team_id, decode(team_id, :NEW.team_id, 1, 0) this_team
          from scedule
         where oper_date = trunc(:NEW.date)
           and team_no = :NEW.team_id) t;


team_count = 0 - можно вставлять любую бригаду
team_count = 1 и this_team_count > 0 - можно вставлять бригаду с номером :NEW.team_id
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089791
SHeLEST1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
благодарствую. А сарказм по поводу танцев. промолчу уж. Не у всех гениальные способности прям всё понимать есть. Не думаю что сразу все прям сразу начинают херачить код на 10 тыс строк
...
Рейтинг: 0 / 0
PL/SQL trigger
    #38089825
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHeLEST1благодарствую. А сарказм по поводу танцев. промолчу уж. Не у всех гениальные способности прям всё понимать есть. Не думаю что сразу все прям сразу начинают херачить код на 10 тыс строк
Это не сарказм, это отчаяние.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle APEX [игнор отключен] [закрыт для гостей] / PL/SQL trigger
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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