powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать "невидмое добавление записей" в транзации ?
15 сообщений из 15, страница 1 из 1
Как сделать "невидмое добавление записей" в транзации ?
    #32022660
Oleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Описание :
Отрываю транзакцию,
делаю Insert\Update в табличке.
в это время другие юзеры успевают считать добавленные данные и использовать их в расчетах, либо открывают формочку на редактирование с этими данными...
и тут я делаю откат...
Добавленные в транзации записи пропадают, что ведет к крайне нехорошим последствиям...
Как я привык в MSSQL: там если в транзации что то делаешь с табличкой, то остальным достум к ней блокируется, даже Select не сделаешь.
Мне так не надо.
Надо чтобы когда я _добавляю_ записи, они не видимы, пока я не сделаю Commit. Т.е. select делать можно.
Когда я _обновляю_ значение в записи - доступ к даной записи блокируется до завершения транзакции.

Помогите кто чем сможет !
Спасибо !
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32022664
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пока не произошёл commit другие сессии однозначно не видят произведённых изменений.
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32022717
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие-то чудные люди эти Майкрософт-Эскуэлисты: пересаживаються с этой (бедовой IMHO) СУБД на СУБД более высокого класса и заявляют: вот мол я работал с такой-то и такой-то фичей на MSSQL, а есть ли такая штука в Оракле? Заявляю - есть. И транзакции, и полный откат, и откат до сэйвпоинта, и блокирование записей и/или всей таблицы в различных режимах как самой СУБД, так и пользователем принудительно. Ко всему прочему по всем этим штукам есть детальнейшие мануалы с примерами, в ШТМЛ и ПДЭФ форматах.

МАЛО???
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023064
Anyone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень хорошо, что в Oracle есть все, что есть в MS SQL. None, подскажите, как в этой СУБД "более высокого класса" делается декларативная ссылочная целостность для операций UPDATE?
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023209
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Необходимость в ссылочной целостность для операций UPDATE в 99% случаях возникает по причине неверно спроектированной структуры базы данных. Так что отсутствие каскадного update оправдано - будет спроектировано меньше кривых баз
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023260
Anyone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Только я не совсем понимаю, почему DRI на delete не является признаком плохого дизайна БД, а на update - является. Вроде бы по ANSI-стандарту и то, и другое правомерно.

И если позволите еще вопрос. В этой бедовой СУБД (SQL Server) при навигации по курсору я могу делать выборку fetch prior, first, last, absolute <n>, relative <n>. Как этого добиться в Oracle?
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023264
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про каскадный update: необходимость изменение значения первичного ключа у записи обычно возникает при использовании естественных ключей в качестве первичных. Плохо это или хорошо - это тема другой дискусии. Но по моему первичный ключ должен быть неизменным. Update-ить связанные записи по всей базе неблагодарное занятие.
Про fetch в обратную сторону: нету его в oracle
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023275
Anyone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и хрен с ним (с fetcheм). В конце концов никто не мешает считать, что если он где-нибудь нужен, это тоже признак кривого дизайна.

Я рискну еще раз злоупотребить Вашей отзывчивостью. Как мне вернуть из хранимой процедуры непосредственно recordset? (т.е. не заводя при этом временную таблицу).
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023328
EAGLE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот с этого надо было начинать )
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023339
Anyone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что, я опять что-то неправильно спросил? Наверно вы правы: есть что-то кривое в идее возвращать recordset из процедуры. Хорошо, что я все-таки пересел на СУБД более высокого класса. К сожалению MS SQL кое-где у нас еще остался. Скажите, как мне в Oracle выбрать его собственные данные и из MS SQL одним selectом?

Спасибо.
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023343
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Передать - вернуть из хранимой процедуры непосредственно recordset можно либо через PL/SQL table, либо передав курсор как парметр с помощью Cursor Variable. Последнее интереснее.

/* Маленькая цитата
The most important benefit of the cursor variable is that it provides a mechanism for passing results of queries (the rows returned by fetches against a cursor) between different PL/SQL programs. Prior to PL/SQL release 2.3, you would have had to fetch all data from the cursor, store it in PL/SQL variables (perhaps a PL/SQL table), and then pass those variables as arguments. With cursor variables, you simply pass the reference to that cursor. This both improves performance and streamlines your code.
*/
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023368
Anyone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем мне курсор? Я не собираюсь ползать по каждой отдельной записи. Мне нужно их как множество вставить в таблицу. Я сейчас покажу на примере этого долбаного MS SQL.

Требуется возвращать не таблицу:
create function MyTest1() returns table as
return (select * from customers)

не курсор:
create proc MyTest2 @cur cursor varying output as
set @cur = cursor for select * from customers

а recordset:
create proc MyTest3 as
select * from customers

Мне не нужен дополнительный overhead ни на курсор, ни на таблицу, потому что всего навсего требуется
insert into MyTest exec MyTest3

Спасибо
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023380
alvako
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Anyone
Придётся вам построчно из pl/sql table или курсора фетчить записи по одной и вставлять их куда надо.

--
P.S. Я не понял, вы своими и вопросами и ёрничанием пытаетесь доказать что нет ничего круче родного вашего MsSQL. Так я вас в обратном не убеждаю и убеждать не собираюсь. Неблагодарное это занятие. А ваши вопросы могут показать лишь наличие разницы в подходах в написании программ для MsSQL и Oracle.
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023394
Anyone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2alvako
Да нет, здесь я как раз солидарен с Вами и считаю, что нет более пустого спора, чем доказывать, чья СУБД круче. Именно поэтому меня задело безапелляционное высказывание None:

"Какие-то чудные люди эти Майкрософт-Эскуэлисты: пересаживаються с этой (бедовой IMHO) СУБД на СУБД более высокого класса и заявляют: вот мол я работал с такой-то и такой-то фичей на MSSQL, а есть ли такая штука в Оракле? Заявляю - есть".

Я просто попытался показать, что он зарвался.
Кстати, мои вопросы были адресованы в первую очередь ему, но он почему-то устранился.

Я благодарен Вам за Ваши ответы. На полном серьезе. В моей практике иногда приходится интегрировать приложения на SQL Server и Oracle, который я знаю несравненно хуже. Если мои язвительные реплики не слишком Вас задели, я прибегнул бы к Вашей помощи и в дальнейшем, уже по делу. В свою очередь, если вдруг Вам паче чаяния понадобится совет по SQL Server, приходите в соседнюю дискуссию, я почту за честь Вам помочь.

Спасибо.
...
Рейтинг: 0 / 0
Как сделать "невидмое добавление записей" в транзации ?
    #32023401
none
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пропустил, увы, вашу дискуссию.
Хорошо, в следующий раз, когда буду наезжать на MSSQL буду писать так:
Это-IMHO-бедевая-IMHO-СУБД-IMHO!
Вам так понятно?
Нет?
ЭТО МОЯ ЛИЧНАЯ ТОЧКА ЗРЕНИЯ. Доказывать я ее не собираюсь, равно так же как мне мало интересны 1-2 (IMHO-IMHO-IMHO) псевдо-примущества (IMHO-IMHO-IMHO) MSSQL, типа движения вверх по курсору. Более того любая дисскуссия сравнения СУБД на 5 посте обращаеться во флэйм.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать "невидмое добавление записей" в транзации ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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