|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
столкнулся с проблемой. похожее обсуждение было тут: https://www.sql.ru/forum/153066/update-blob-in-trigger но так и не понял решения. суть вот в чем: в среде разработки Toad for Oracle, пытаюсь обновить поле с типом BLOB. есть триггер, который потом переливает это поле в другую таблицу. если выполнить апдейт через statement (update my_table set blob_field = ...), то в триггере длина нового блоба ненулевая (dbms_lob.getlength(:new.blob_field) > 0), но если изменяю тело BLOBa через data grid (двойной клик по полю в строке, затем открывается "Blob editor", затем выбираю любой файл непустой и загружаю, то в том же триггере почему-то dbms_lob.getlength = 0, но из таблицы могу скачать блобик и там есть открываемое непустое содержимое) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:42 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipav, Lob locator ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:55 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
не очень понял. в обоих случаях отрабатывает один и тот же код в триггере, но через statement апдейта призодит ненулевая длина блоба, а через Toad data grid в триггер приходит якобы нулевой блоб. такое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 15:41 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavтакое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицыНе надо гнать пурги, когда не понимаешь как работают LOB-ы. Чтобы понять, придётся вдумчиво прочитать документацию. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 16:00 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Elic, суть объекта LOB известна и понятна, может Вы не поняли суть вопроса? в чем подвох проблемы? повторюсь: в триггере на таблице выполняется код, в частности dbms_output.put_line(dbms_lob.getlength( :new.blob_body )); ситуация 1: апдейт через SQL update my_table set blob_field = (select blob_src from temp_table) where id = 12345; ситуация 2: в data grid среды разработки, в частности TOAD, два раза если кликнуть на поле типа BLOB, то открывается editor, в котором можно выбрать файл из файловой системы ОС и поместить его по факту в область памяти, на которую указывает локатор из выбранного поля строки, запись происходит, могу затем посмотреть (скачать) загруженный файл в обеих ситуациях вызывается один и тот же код триггера, но в первой ситуации выводится значение, большее 0, например 199374, а во второй ситуации выводится значение 0 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 18:42 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavсуть объекта LOB известна и понятна, может Вы не поняли суть вопроса? в чем подвох проблемы?Считающий себя недопонятым гением и талдычащий одно и то же, скажи, что тебе непонятно в следуующей части документации:RTFMif you use OCI functions or DBMS_LOB routines to change the value of a LOB column or the LOB attribute of an object type column, Oracle does not fire the DML trigger . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 19:01 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavсуть объекта LOB известна и понятнаЛамерство уныло. Пройдись хотя бы по ссылкам предложенного поиска. Твоя же ссылка содержит код, достаточный для анализа. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2019, 19:01 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Elic, -2-, спасибо, стало яснее. но скажу, что на форумах то наверное и пишут для того, чтобы понять проблему и обращаются к знающим людям. и можно было сразу ответить нормально, без лишнего выпендрёжа!! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 09:06 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavи можно было сразу ответить нормально, без лишнего выпендрёжа!!Т.е. это следует понимать как "Я - д'Артаньян. По ссылкам не хожу. А вы - …" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 09:20 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Elic, " что тебе непонятно в следуующей части документации: RTFM if you use OCI functions or DBMS_LOB routines to change the value of a LOB column or the LOB attribute of an object type column, Oracle does not fire the DML trigger " ключевые слова "does not fire the DML trigger" - которые означают, что подобные действия не инициируют событие, на которое происходит запуск триггера. действительно, если попробовать записать данные через dbms_lob, то триггер даже не будет выполняться. в моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 09:23 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavв моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.О чудо! Триггер срабатывает. Но стало ли тебе легче? Пора бы уже понять, что содержимое lob-а триггером ловить ненадёжно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 09:31 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Elic, это понятно, что ненадежно! но как объясняется поведение данных в моих двух примерах - я это хочу понять? я же говорю, что триггер выполняется в обоих моих примерах, а вы кидаете ссылки, в которых описываются ситуации, не активирующие триггер. ну или давайте киньте еще какую-нибудь ссылку, сделайте тем самым вид, что: - всё знаете (но не отвечаете нормально при этом), плюс выставив меня незнающим (причем я не отрицаю, что чего-то недопонимаю) или - не знаете решения или причины проблемы и не хотите об этом сказать (признаться) ? ну и разойдемся тогда, чтобы не тратить время... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 09:38 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavпонятноОпять?! ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 09:59 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Elicchavchipavв моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.О чудо! Триггер срабатывает. Но стало ли тебе легче? Пора бы уже понять, что содержимое lob-а триггером ловить ненадёжно. триггер срабатывает, значит ето не OCI functions or DBMS_LOB где в доке написано, что если триггер fire (а он fire) то ловить ненадежно? .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 09:59 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Staxтриггер срабатывает, значит ето не OCI functions or DBMS_LOBЕще один логик. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 10:00 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipav- всё знаете (но не отвечаете нормально при этом), плюс выставив меня незнающим (причем я не отрицаю, что чего-то недопонимаю) - не знаете решения или причины проблемы и не хотите об этом сказать (признаться) ?Третье - ты д'артаньян, не способный пройтись по ссылкам и воспринять информацию. Послнедний намёк: returning. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 10:02 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Staxтриггер срабатывает, значит ето не OCI functions or DBMS_LOBСтанислав, включи мозг. DML триггера ловят DML события. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 10:06 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Elic, как это понимать?? ElicТретье - ты д'артаньян что опять?? -2-Опять?! так вы ссылки кидаете и намёками бросаетесь, а слабо написать нормально?) или вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 10:18 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
ElicStaxтриггер срабатывает, значит ето не OCI functions or DBMS_LOBСтанислав, включи мозг. DML триггера ловят DML события. если не срабатывает, то я ето допустим понимаю (OCI or DBMS_LOB) но триггер то сработал что словил триггер (какое DML событие) кагда dbms_lob.getlength(:new.blob_field)=0? імхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0 ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 10:51 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavили вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться? знають! но предлагают не рыбу, а удочку в пустыне ораклячей доки .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 10:55 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
перед тем как писать здесь, я прочитал документацию, но там не нашел описание поведения как в частности описал я. поэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 11:04 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
chavchipavпоэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть...Самовлюблённый ламер, returning в приведённых ссылках искать не стал? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 11:38 |
|
Апдейт поля BLOB
|
|||
---|---|---|---|
#18+
Staxімхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0Ты безнадёжен. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.02.2019, 11:39 |
|
|
start [/forum/topic.php?fid=52&fpage=85&tid=1882808]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
others: | 339ms |
total: | 491ms |
0 / 0 |