powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Insert FOR UPDATE
5 сообщений из 30, страница 2 из 2
Insert FOR UPDATE
    #39321084
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неоченьуменandrey_anonymous,

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create or replace PROCEDURE FOR_BRON (MESTO# NUMBER,MESTO_DATE# DATE,FIO# VARCHAR2)
IS
CNT NUMBER;
BEGIN
FOR V IN (SELECT COUNT(1) OVER (ORDER BY 1) CNT FROM BRON S WHERE MESTO=MESTO# AND SEANS_DATE=MESTO_DATE# FOR UPDATE) LOOP
       CNT := V.CNT;
      EXIT;
    END LOOP;
    
IF CNT=0 THEN
INSERT INTO BRON VALUES (MESTO#,MESTO_DATE#,FIO#);
ELSE  Raise_application_error( -20001, 'УЖЕ ЕСТЬ ТАКАЯ ЗАПИСЬ, СЛЫШ');
END IF;
COMMIT;
END;



Эхх, вроде бы так должно работать, только не знаю как в этом удостовериться.
По поводу unique key, если сделать такой ключ, то как я понимаю при попытке внести неправильную строку оракл выдаст что-то вроде "нарушено ограничение целостности" . Просто хотелось бы чтобы строки даже не пытались вставляться, чтобы процедура не позволяля

for update заблокирует СУЩЕСТВУЮЩУЮ запись, у Вас ее нет, она еще не вставлена
поетому для етой задачи for update не подходит
вернее подходит но с усложненнием, напр есть схема мест кинозала

берем Ваш первый вариант (без over)
шоб тестировать добавте после INSERT INTO BRON VALUES (MESTO#,SEANS_DATE#,FIO#);
dbms_lock.sleep(20) ждать 20 секунд
и запустите в двух сессиях на протяжении 20с
увидете результат


зы
прислушайтеcть к Елику насчет уник. индекса

.......
stax
...
Рейтинг: 0 / 0
Insert FOR UPDATE
    #39321093
Не понятно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,
Про уникальный индекс раньше было 19744862 :)
...
Рейтинг: 0 / 0
Insert FOR UPDATE
    #39321099
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятноstax..,
Про уникальный индекс раньше было 19744862 :)
если бы ваш ответ приняли дословно, то места бы были только на утренние сеансы и всего один раз :D
...
Рейтинг: 0 / 0
Insert FOR UPDATE
    #39321101
Не понятно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
j2k, на тот момент в словаре было только id и value. остальные колонки появились позже.
...
Рейтинг: 0 / 0
Insert FOR UPDATE
    #39321398
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понятноstax..,
Про уникальный индекс раньше было 19744862 :)
тут вопрос даж не в етом
разные СУБД по разному пашут
про оракля, ето важно, грубо говоря запретить чтение нельзя
for update если грубо то ето update ф=ф
такая философия
я не сразу к етому пришел
заблокировть чтение в оракле большая проблема
я на счет max(xxx)

.....
stax
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Insert FOR UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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