|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Описание : Отрываю транзакцию, делаю Insert\Update в табличке. в это время другие юзеры успевают считать добавленные данные и использовать их в расчетах, либо открывают формочку на редактирование с этими данными... и тут я делаю откат... Добавленные в транзации записи пропадают, что ведет к крайне нехорошим последствиям... Как я привык в MSSQL: там если в транзации что то делаешь с табличкой, то остальным достум к ней блокируется, даже Select не сделаешь. Мне так не надо. Надо чтобы когда я _добавляю_ записи, они не видимы, пока я не сделаю Commit. Т.е. select делать можно. Когда я _обновляю_ значение в записи - доступ к даной записи блокируется до завершения транзакции. Помогите кто чем сможет ! Спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2002, 12:35 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Пока не произошёл commit другие сессии однозначно не видят произведённых изменений. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.02.2002, 12:44 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Какие-то чудные люди эти Майкрософт-Эскуэлисты: пересаживаються с этой (бедовой IMHO) СУБД на СУБД более высокого класса и заявляют: вот мол я работал с такой-то и такой-то фичей на MSSQL, а есть ли такая штука в Оракле? Заявляю - есть. И транзакции, и полный откат, и откат до сэйвпоинта, и блокирование записей и/или всей таблицы в различных режимах как самой СУБД, так и пользователем принудительно. Ко всему прочему по всем этим штукам есть детальнейшие мануалы с примерами, в ШТМЛ и ПДЭФ форматах. МАЛО??? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2002, 07:51 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Очень хорошо, что в Oracle есть все, что есть в MS SQL. None, подскажите, как в этой СУБД "более высокого класса" делается декларативная ссылочная целостность для операций UPDATE? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2002, 08:03 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Необходимость в ссылочной целостность для операций UPDATE в 99% случаях возникает по причине неверно спроектированной структуры базы данных. Так что отсутствие каскадного update оправдано - будет спроектировано меньше кривых баз ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2002, 05:30 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Спасибо. Только я не совсем понимаю, почему DRI на delete не является признаком плохого дизайна БД, а на update - является. Вроде бы по ANSI-стандарту и то, и другое правомерно. И если позволите еще вопрос. В этой бедовой СУБД (SQL Server) при навигации по курсору я могу делать выборку fetch prior, first, last, absolute <n>, relative <n>. Как этого добиться в Oracle? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2002, 10:49 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Про каскадный update: необходимость изменение значения первичного ключа у записи обычно возникает при использовании естественных ключей в качестве первичных. Плохо это или хорошо - это тема другой дискусии. Но по моему первичный ключ должен быть неизменным. Update-ить связанные записи по всей базе неблагодарное занятие. Про fetch в обратную сторону: нету его в oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2002, 11:37 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Ну и хрен с ним (с fetcheм). В конце концов никто не мешает считать, что если он где-нибудь нужен, это тоже признак кривого дизайна. Я рискну еще раз злоупотребить Вашей отзывчивостью. Как мне вернуть из хранимой процедуры непосредственно recordset? (т.е. не заводя при этом временную таблицу). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2002, 12:59 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Вот с этого надо было начинать ) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2002, 03:09 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Что, я опять что-то неправильно спросил? Наверно вы правы: есть что-то кривое в идее возвращать recordset из процедуры. Хорошо, что я все-таки пересел на СУБД более высокого класса. К сожалению MS SQL кое-где у нас еще остался. Скажите, как мне в Oracle выбрать его собственные данные и из MS SQL одним selectом? Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2002, 07:18 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Передать - вернуть из хранимой процедуры непосредственно 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. */ ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2002, 07:40 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
А зачем мне курсор? Я не собираюсь ползать по каждой отдельной записи. Мне нужно их как множество вставить в таблицу. Я сейчас покажу на примере этого долбаного 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 Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2002, 09:27 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
2 Anyone Придётся вам построчно из pl/sql table или курсора фетчить записи по одной и вставлять их куда надо. -- P.S. Я не понял, вы своими и вопросами и ёрничанием пытаетесь доказать что нет ничего круче родного вашего MsSQL. Так я вас в обратном не убеждаю и убеждать не собираюсь. Неблагодарное это занятие. А ваши вопросы могут показать лишь наличие разницы в подходах в написании программ для MsSQL и Oracle. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2002, 11:39 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
2alvako Да нет, здесь я как раз солидарен с Вами и считаю, что нет более пустого спора, чем доказывать, чья СУБД круче. Именно поэтому меня задело безапелляционное высказывание None: "Какие-то чудные люди эти Майкрософт-Эскуэлисты: пересаживаються с этой (бедовой IMHO) СУБД на СУБД более высокого класса и заявляют: вот мол я работал с такой-то и такой-то фичей на MSSQL, а есть ли такая штука в Оракле? Заявляю - есть". Я просто попытался показать, что он зарвался. Кстати, мои вопросы были адресованы в первую очередь ему, но он почему-то устранился. Я благодарен Вам за Ваши ответы. На полном серьезе. В моей практике иногда приходится интегрировать приложения на SQL Server и Oracle, который я знаю несравненно хуже. Если мои язвительные реплики не слишком Вас задели, я прибегнул бы к Вашей помощи и в дальнейшем, уже по делу. В свою очередь, если вдруг Вам паче чаяния понадобится совет по SQL Server, приходите в соседнюю дискуссию, я почту за честь Вам помочь. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2002, 12:48 |
|
Как сделать "невидмое добавление записей" в транзации ?
|
|||
---|---|---|---|
#18+
Пропустил, увы, вашу дискуссию. Хорошо, в следующий раз, когда буду наезжать на MSSQL буду писать так: Это-IMHO-бедевая-IMHO-СУБД-IMHO! Вам так понятно? Нет? ЭТО МОЯ ЛИЧНАЯ ТОЧКА ЗРЕНИЯ. Доказывать я ее не собираюсь, равно так же как мне мало интересны 1-2 (IMHO-IMHO-IMHO) псевдо-примущества (IMHO-IMHO-IMHO) MSSQL, типа движения вверх по курсору. Более того любая дисскуссия сравнения СУБД на 5 посте обращаеться во флэйм. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.02.2002, 13:16 |
|
|
start [/forum/topic.php?fid=52&msg=32023380&tid=1993428]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 249ms |
total: | 389ms |
0 / 0 |