|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
Не нашел темы по PL\SQL На форуме решил написать там, где и учусь работать. Такая проблема. Имеется таблица " Список операций в больнице", в котором 1й столбец это "Дата операции" а 2й столбец это " Номер бригаты" Надо написать триггер , который бы проверял один факт: в один день не могут работать сразу 2 бригады, т.е. несколько операций одна бригада делать может в один день. а несколько бригад(больше одной) в один день не могут(как бы просто 1 бригада и работает в 1 день) В программировании только начал разбираться поэтому плохо пока строю алгоритмы и тем более пишу. Подсказали что надо с помощью курсоров делать, но всё равно пока безрезультатно всё =( Ири нарушении условия этого должно записывать просто в таблицу в какую нибудь в ячейку например "Ошибка!Другая Бригада уже работает"! Помогите, кто шарит, прошу=( Заранее спасибо!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.12.2012, 21:56 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
SHeLEST1Подсказали что надо с помощью курсоров делатьНаврали. Надо сделать один селект, который будет возвращать количество работающих бригад. Код: sql 1. 2. 3.
Потом анализируете переменную team_count. Если 0 - операционная свободна, заходите, кто хотите, берите, что хотите оперируйте на здоровье. Если 1 - занято, если 2 и больше - караул, включайте сирену, вызывайте спецназ... ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2012, 19:01 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
Если честно не совсем понял как количество поможет мне) Мне жыж надо проверить как бы факт что если такая дата используется уже то только с тем номером бригады которая в эту таблицу уже добавлена, а не новая бригада. Т.е. например ....Дата ..... №бригады 10,10,12 .......... 1 то если добавлю insert'ом дату 10.10.12 и №бригады 2 то выдаст ошибку что в данную дату уже работает бригада 1. Или я просто как то не так трактую ваше сообщение) Прошу объяснить неучу)) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.12.2012, 23:10 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
SHeLEST1Если честно не совсем понял как количество поможет мне) Мне жыж надо проверить как бы факт что если такая дата используется уже то только с тем номером бригады которая в эту таблицу уже добавлена, а не новая бригада. Т.е. например ....Дата ..... №бригады 10,10,12 .......... 1 то если добавлю insert'ом дату 10.10.12 и №бригады 2 то выдаст ошибку что в данную дату уже работает бригада 1. Или я просто как то не так трактую ваше сообщение) Прошу объяснить неучу))Запрос, возвращающий количество строк, в которых указана нужная бригада и нужная дата. Так понятно? Ну или как еще объяснить? Ну или хотя бы структуру таблицы приведите... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2012, 14:36 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
Мне необходима проверка именно "Если такая дата есть, то номер бригады другой кроме той который указан уже в таблице использоваться не должен". у меня не список текущих а как бы вообще например дат на месяц. Я немного неправильно выразился. Ттут будет именно как бы график работы операций на неделю например. Т.е. список дат, на каждый день, но номер бригады указывается только один, т.е. если 1 число поставлено было с бригадой № 1, то другая бригада в этот день не может оперировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2012, 14:53 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
Блин... Окей. Таблица SCHEDULE Столбцы: oper_date, team_no Код внутри триггера на insert... Запрос: Код: sql 1. 2. 3. 4. 5.
После выполнения в переменной team_count будет 0 если свободно (можно вставлять строку) и 1 если занято (нельзя вставлять строку). Если и это непонятно, то займитесь танцами что ли вместо программирования... ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2012, 17:12 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
rockclimberБлин... Окей. Таблица SCHEDULE Столбцы: oper_date, team_no Код внутри триггера на insert... Запрос: Код: sql 1. 2. 3. 4. 5.
После выполнения в переменной team_count будет 0 если свободно (можно вставлять строку) и 1 если занято (нельзя вставлять строку). Если и это непонятно, то займитесь танцами что ли вместо программирования...То есть не так. Сначала проверяем Код: sql 1. 2. 3. 4.
Если 0 - то вообще свободно, если 1 - то есть какая-то бригада. А код из прошлого поста поможет понять, какая именно это бригада. Если 0 - то другая, если 1 - то та же самая... А вообще дурацкая какая-то система... Можно вообще одним запросом проверить оба условия: Код: sql 1. 2. 3. 4. 5. 6. 7.
team_count = 0 - можно вставлять любую бригаду team_count = 1 и this_team_count > 0 - можно вставлять бригаду с номером :NEW.team_id ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2012, 17:27 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
благодарствую. А сарказм по поводу танцев. промолчу уж. Не у всех гениальные способности прям всё понимать есть. Не думаю что сразу все прям сразу начинают херачить код на 10 тыс строк ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2012, 18:26 |
|
PL/SQL trigger
|
|||
---|---|---|---|
#18+
SHeLEST1благодарствую. А сарказм по поводу танцев. промолчу уж. Не у всех гениальные способности прям всё понимать есть. Не думаю что сразу все прям сразу начинают херачить код на 10 тыс строк ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2012, 19:07 |
|
|
start [/forum/topic.php?fid=50&fpage=54&tid=1875887]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 128ms |
0 / 0 |