|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL К слову о неожиданных граблях - вот мои сегодняшние. недоговариваете (махлюете) currval нельзя получить где-то не дернув nextval .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 10:35 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
123йй НеофитSQLАдын страка - адын камит. а это не твой "опытный коллега" в соседней теме решает то, что ты сочинил ? комит комиту рознь. Ставлю на то, что в обоих случаях удаленный клиент комитит. При частоте 0.2 тех проблем не получишь, но удивление может прибежать, когда кто-нибудь с большими потоками скажет - о яка гарна система, дайте нам такую... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 10:38 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Про сиквенс .currval/nextval подсказать Не осилили сходу прочитать про cache и order? Бывает. Тут таких тем от студентов - пачками. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 14:52 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Но почему-то не озвучивает Постеснялся что-ли? Вроде не замечено за ним особой стеснительности -- вываливает свои домыслы совершенно свободно И я почему-то уверен, что в подсказке он выдаст частный случай (alter sequence), хотя в доке описан более общий ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:08 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров, у него примерно с частотой 0.2ГЦ палятся номера ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:19 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Stax НеофитSQL К слову о неожиданных граблях - вот мои сегодняшние. недоговариваете (махлюете) currval нельзя получить где-то не дернув nextval .... stax Как это получилось: В "главной" сессии дернул nextval. получил 31. Сессия осталась живой. Вторая сессия потянула свой nextval 4 раза: 32,33,34,35, и закрылась. Дальше - как на экране. Currval дает последнее число, но для сессии. По незнанию, я ожидал что получу текущее значение сиквенса, его не меняя. Похоже, такой операции просто нет. Чтобы прочитать глобальный сиквенс, его надо изменить. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:27 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL как в единственной активной сессии НеофитSQL Вторая сессия потянула Да вы, батенька, тот ещё шулер. упд. Про то, что ваши конструкции развалятся в многопользовательком режиме, вам говорят чуть ли не с первого топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:49 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров НеофитSQL Про сиквенс .currval/nextval подсказать, или ещё подумаете, как в единственной активной сессии разрыв появился? Да, это были мои грабли - я подумал что currval позволяет прочитать значение глобального сиквенса. Оказалось - фигвам. Если хочешь узнать значение - изволь его заодно увеличить. Как прочитать без инкремента - наверное только через dbms функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:49 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL как в единственной активной сессии НеофитSQL Вторая сессия потянула Да вы, батенька, тот ещё шулер. Следите за руками лучше :) Текст фактически корректен. Все, что было показано на экране - произошло в одной одинокой сессии. Между вызовами currval и nextval других сессий не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:55 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL я подумал А надо было документацию прочитать, а не додумывать. One user can never acquire the sequence number generated by another user . After a sequence value is generated by one user, that user can continue to access that value regardless of whether the sequence is incremented by another user. Sequence numbers are generated independently of tables, so the same sequence can be used for one or for multiple tables. It is possible that individual sequence numbers will appear to be skipped, because they were generated and used in a transaction that ultimately rolled back. Additionally, a single user may not realize that other users are drawing from the same sequence. ... Any reference to CURRVAL always returns the current value of the sequence, which is the value returned by the last reference to NEXTVAL. Before you use CURRVAL for a sequence in your session , you must first initialize the sequence with NEXTVAL ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 15:58 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Между вызовами currval и nextval других сессий не было Т.е. вы так и не осилили концепцию многопользовательской работы? Именно, что была. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:03 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Stax пропущено... недоговариваете (махлюете) currval нельзя получить где-то не дернув nextval .... stax Как это получилось: В "главной" сессии дернул nextval. получил 31. Сессия осталась живой. Вторая сессия потянула свой nextval 4 раза: 32,33,34,35, и закрылась. Дальше - как на экране. Currval дает последнее число, но для сессии. По незнанию, я ожидал что получу текущее значение сиквенса, его не меняя. Похоже, такой операции просто нет. Чтобы прочитать глобальный сиквенс, его надо изменить. Не верю что во Второй сессии авторCurrval дает последнее число, но для сессии не дернув nextval Currval не штатно не получить Код: plsql 1. 2. 3. 4. 5.
ps c cash дырки будут ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:04 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Между вызовами currval и nextval других сессий не было. А теперь продемонстрируйте, что в вашем понимании "была другая сессия между ... ". ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:05 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Все, что было показано на экране - произошло в одной одинокой сессии. Между вызовами currval и nextval других сессий не было . автор Вторая сессия потянула свой nextval 4 раза: 32,33,34,35, и закрылась. кто-то запутался в двух соснах ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:08 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Вячеслав Любомудров Но почему-то не озвучивает Постеснялся что-ли? Вроде не замечено за ним особой стеснительности -- вываливает свои домыслы совершенно свободно И я почему-то уверен, что в подсказке он выдаст частный случай (alter sequence), хотя в доке описан более общий alter sequence - это как подкрутка одометра? Это была бы не загадка, а издевательство. Тут все было чесноком. Человек садится у компьютера, в открытой сессии с неизвестной ему историей. Проверяет, что других сессий нет, он с ораклом наедине. спрашивает currval - получает 31 (т.е. сессия уже работала с сиквенсом) спрашивает nextval - получает 36. Мне это показалось необычным, т.к. о кэше сиквенса в доках говорится в основном в контексте скорости. Про currval Оракл пишет максимально просто: (я подправил, согласно моему пониманию) CURRVAL: Returns the current value of a sequence (returns the last value returned from nextval in the same session) NEXTVAL: Increments the sequence and returns the next value ... Any reference to CURRVAL always returns the current value of the sequence, which is the value returned by the last reference to NEXTVAL (in the same session) Отсюда: https://docs.oracle.com/cd/B19306_01/server.102/b14200/pseudocolumns002.htm Такое поведение currval для новичка неинтуитивное, но полезное: можно пользоваться currval вместо запоминания числа в переменной, оно не изменится в контексте сессии. Пример в конце страницы по ссылке выше это демонстрирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:16 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
Stax НеофитSQL Все, что было показано на экране - произошло в одной одинокой сессии. Между вызовами currval и nextval других сессий не было . автор Вторая сессия потянула свой nextval 4 раза: 32,33,34,35, и закрылась. кто-то запутался в двух соснах ..... stax Похоже. Вот карта: вторая сессия отработала до того , что показано на экране. Все, что было показано на экране - произошло в одной одинокой сессии. Между вызовами currval и nextval других сессий не было ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:19 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Такое поведение currval для новичка неинтуитивное С чего бы? Текущее значение, полученное последним этим самым новичком. Очень даже интуитивно. Но вы продолжайте бессистемно тыкаться носом в частности, не читая концепций. Чудес будет много. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:22 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL Между вызовами currval и nextval других сессий не было Т.е. вы так и не осилили концепцию многопользовательской работы? Именно, что была. А, вижу что вы так и не поняли пока. Похоже, что не сталкивались. посмотрите другие ответы, должно проясниться. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:23 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL вторая сессия отработала до того , что показано на экране. Включая первый вызов nextval? Заговариваетесь. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:23 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL А, вижу что вы так и не поняли пока Нет. Это вы упорно живёте в императивном однопоточном мире. У вас получился классический пример "чудес" многопользовательского режима. Именно из-за непонимания, что вторая сессия была и работала с тем же объектом. упд. нарисуйте себе на бумажке таймлайны сессий, может так дойдёт ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:25 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL Такое поведение currval для новичка неинтуитивное С чего бы? Текущее значение, полученное последним этим самым новичком. Очень даже интуитивно. Но вы продолжайте бессистемно тыкаться носом в частности, не читая концепций. Чудес будет много. О, вы теперь поняли о чем речь. currval возвращает последнее значение nextval для этой сессии . Вы конечно об этом давно знали, из документации :) Подскажите, где Оракл это описывает? Никак не найду. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:26 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL Подскажите, где Оракл это описывает? Парой сообщений выше цитата. И на моей памяти вы единственный человек, для которого это оказалось неинтуитивным. За все годы работы с бд в целом и ораклом в частности. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:30 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
НеофитSQL env пропущено... Т.е. вы так и не осилили концепцию многопользовательской работы? Именно, что была. А, вижу что вы так и не поняли пока. Похоже, что не сталкивались. посмотрите другие ответы, должно проясниться. Но, как обычно, аффтар не читатель Думал там действительно что-то из https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/managing-views-sequences-and-synonyms.html#GUID-5ABC0615-BE0C-48CE-BD18-C86AAF7DF953 The database might skip sequence numbers if you choose to cache a set of sequence numbers. For example, when an instance abnormally shuts down (for example, when an instance failure occurs or a SHUTDOWN ABORT statement is issued), sequence numbers that have been cached but not used are lost. Also, sequence numbers that have been used but not saved are lost as well. The database might also skip cached sequence numbers after an export and importхотя здесь тоже не отражен случай, что определение просто выгрузилось из Library Cache Насколько помню, в более ранних версиях про это было написано PS. Но ты продолжай -- и мы поразвлекаемся и ты таки что-то новое узнаешь ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:32 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
env НеофитSQL вторая сессия отработала до того , что показано на экране. Включая первый вызов nextval? Заговариваетесь. Вы наверное спорите о правилах шахмат после каждого проигрыша. Держите марку. Вот что я представил: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Я не показал первый nextval (Stax и другие быстро смекнули что он конечно же был), я только сказал что между currval и nextval (на экране) никаких других сессий не происходило. Это правда. Это была задачка подумать про контекст, и как такой разрыв мог произойти. Вячеслав (явно опытный товарищ) выдвинул одну гипотезу, которая вполне могла объяснить наблюдаемый разрыв. Других предложений я не видел, надеюсь что не пропустил. Если хотите, я вам лично еще загадок накидаю, полегче. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:35 |
|
Чтение таблицы из триггера (after-insert)
|
|||
---|---|---|---|
#18+
это единственный человек для которого так много оказалось интиетивно неправильно понятным, что читать документацию совсем не обязательно Ну он честно сразу же и сказал, что программировать по документации может каждый слабак не интересно, а у него программирование становится как настоящее искусство... хождение по граблям творческий поиск ... |
|||
:
Нравится:
Не нравится:
|
|||
21.10.2020, 16:36 |
|
|
start [/forum/topic.php?fid=52&msg=40010513&tid=1880777]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
86ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 310ms |
total: | 495ms |
0 / 0 |