powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запретить удаление и изменение менее чем 3 рабочих дня
7 сообщений из 7, страница 1 из 1
Запретить удаление и изменение менее чем 3 рабочих дня
    #39899408
aleks0004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггер на запрет удаления и изменения товаров, поступивших в текущем месяце или если менее, чем 3 рабочих дня от текущей даты. Помогите пожалуйста!!!

CREATE OR REPLACE TRIGGER salemapTrig2
BEFORE DELETE OR UPDATE
ON salemap
FOR EACH ROW
BEGIN
IF (EXTRACT(MONTH from :NEW.Dat) = EXTRACT(MONTH from sysdate) OR (3 working daysssss)) THEN
RAISE_APPLICATION_ERROR(-20000,'Удаление или обновление запрещено');
END IF;
END;
...
Рейтинг: 0 / 0
Запретить удаление и изменение менее чем 3 рабочих дня
    #39899411
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и кто знает какие у твоей конторы дни рабочие а какие нет? Пока не создашь календарь-таблицу далеко не уедешь.

SY.
...
Рейтинг: 0 / 0
Запретить удаление и изменение менее чем 3 рабочих дня
    #39899412
aleks0004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Все рабочие дни кроме субботы и вскр, остальное не важно.
...
Рейтинг: 0 / 0
Запретить удаление и изменение менее чем 3 рабочих дня
    #39899422
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks0004

Все рабочие дни кроме субботы и вскр, остальное не важно.


Код: plsql
1.
least(dt,trunc(dt,'iw') + 4) - <число дней от текущей даты> + 2 * least(0,sign(dt-trunc(dt,'iw') - <число дней от текущей даты>))



Например:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
with t as (
           select  trunc(sysdate,'w') + level dt
             from  dual
             connect by level <= 14
          )
select  to_char(dt,'fmmm/dd/yyyy, Day') date_,
        to_char(least(dt,trunc(dt,'iw') + 4) - 3 + 2 * least(0,sign(dt-trunc(dt,'iw') - 3)),'fmmm/dd/yyyy, Day') date_minus_3_weekdays
  from  t
  order by dt
/

DATE_                                            DATE_MINUS_3_WEEKDAYS
------------------------------------------------ ----------------------
12/2/2019, Monday                                11/27/2019, Wednesday
12/3/2019, Tuesday                               11/28/2019, Thursday
12/4/2019, Wednesday                             11/29/2019, Friday
12/5/2019, Thursday                              12/2/2019, Monday
12/6/2019, Friday                                12/3/2019, Tuesday
12/7/2019, Saturday                              12/3/2019, Tuesday
12/8/2019, Sunday                                12/3/2019, Tuesday
12/9/2019, Monday                                12/4/2019, Wednesday
12/10/2019, Tuesday                              12/5/2019, Thursday
12/11/2019, Wednesday                            12/6/2019, Friday
12/12/2019, Thursday                             12/9/2019, Monday
12/13/2019, Friday                               12/10/2019, Tuesday
12/14/2019, Saturday                             12/10/2019, Tuesday
12/15/2019, Sunday                               12/10/2019, Tuesday

14 rows selected.

SQL> 



Надеюсь дальше дорисуешь.

SY.
...
Рейтинг: 0 / 0
Запретить удаление и изменение менее чем 3 рабочих дня
    #39899425
aleks0004
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY,

Благодарю за ответ, попробую разобраться
...
Рейтинг: 0 / 0
Запретить удаление и изменение менее чем 3 рабочих дня
    #39900972
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks0004,

триггер пишите внимательнее, а тот что у вас выше - луданет ексепшен в по поводу месяца безотносительно года
...
Рейтинг: 0 / 0
Запретить удаление и изменение менее чем 3 рабочих дня
    #39900979
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish
aleks0004,

триггер пишите внимательнее, а тот что у вас выше - луданет ексепшен в по поводу месяца безотносительно года


там не токо месяц/год надо править

авторТриггер на запрет удаления и изменения товаров

.....
stax
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запретить удаление и изменение менее чем 3 рабочих дня
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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