Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
столкнулся с проблемой.
похожее обсуждение было тут: 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, но из таблицы могу скачать блобик и там есть открываемое непустое содержимое)
5 фев 19, 14:42    [21801963]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14912
chavchipav,

Lob locator
5 фев 19, 14:55    [21801975]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
RTFM LOB Rules
5 фев 19, 14:57    [21801977]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
не очень понял.

в обоих случаях отрабатывает один и тот же код в триггере, но через statement апдейта призодит ненулевая длина блоба, а через Toad data grid в триггер приходит якобы нулевой блоб. такое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицы
5 фев 19, 15:41    [21802007]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
chavchipav
такое ощущение, что при апдейте через data grid создается какой-то другой локатор, который непонятно как и когда присваивается полю таблицы
Не надо гнать пурги, когда не понимаешь как работают LOB-ы.
Чтобы понять, придётся вдумчиво прочитать документацию.
5 фев 19, 16:00    [21802025]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
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
6 фев 19, 18:42    [21802992]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
chavchipav
суть объекта LOB известна и понятна, может Вы не поняли суть вопроса? в чем подвох проблемы?
Считающий себя недопонятым гением и талдычащий одно и то же, скажи, что тебе непонятно в следуующей части документации:
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.
6 фев 19, 19:01    [21803005]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14912
chavchipav
суть объекта LOB известна и понятна
Ламерство уныло.
Пройдись хотя бы по ссылкам предложенного поиска. Твоя же ссылка содержит код, достаточный для анализа.
6 фев 19, 19:01    [21803006]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic, -2-,

спасибо, стало яснее.

но скажу, что на форумах то наверное и пишут для того, чтобы понять проблему и обращаются к знающим людям.

и можно было сразу ответить нормально, без лишнего выпендрёжа!!
7 фев 19, 09:06    [21803207]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
chavchipav
и можно было сразу ответить нормально, без лишнего выпендрёжа!!
Т.е. это следует понимать как "Я - д'Артаньян. По ссылкам не хожу. А вы - …" ?
7 фев 19, 09:20    [21803212]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
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, чтобы понять, что триггер в принципе запускался.
7 фев 19, 09:23    [21803215]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
chavchipav
в моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.
О чудо! Триггер срабатывает. Но стало ли тебе легче?

Пора бы уже понять, что содержимое lob-а триггером ловить ненадёжно.
7 фев 19, 09:31    [21803220]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic,

это понятно, что ненадежно!

но как объясняется поведение данных в моих двух примерах - я это хочу понять?

я же говорю, что триггер выполняется в обоих моих примерах, а вы кидаете ссылки, в которых описываются ситуации, не активирующие триггер.

ну или давайте киньте еще какую-нибудь ссылку, сделайте тем самым вид, что:
- всё знаете (но не отвечаете нормально при этом), плюс выставив меня незнающим (причем я не отрицаю, что чего-то недопонимаю)
или
- не знаете решения или причины проблемы и не хотите об этом сказать (признаться) ?

ну и разойдемся тогда, чтобы не тратить время...
7 фев 19, 09:38    [21803225]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14912
chavchipav
понятно
Опять?!
7 фев 19, 09:59    [21803238]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1983
Elic
chavchipav
в моих же описанных выше ситуациях я написал, что триггер выполняется (!) = отрабатывает код триггера, чтобы понять это, я добавил простой output, чтобы понять, что триггер в принципе запускался.
О чудо! Триггер срабатывает. Но стало ли тебе легче?

Пора бы уже понять, что содержимое lob-а триггером ловить ненадёжно.


триггер срабатывает, значит ето не OCI functions or DBMS_LOB

где в доке написано, что если триггер fire (а он fire) то ловить ненадежно?


....
stax
7 фев 19, 09:59    [21803240]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
-2-
Member

Откуда:
Сообщений: 14912
Stax
триггер срабатывает, значит ето не OCI functions or DBMS_LOB
Еще один логик.
7 фев 19, 10:00    [21803241]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
chavchipav
- всё знаете (но не отвечаете нормально при этом), плюс выставив меня незнающим (причем я не отрицаю, что чего-то недопонимаю)
- не знаете решения или причины проблемы и не хотите об этом сказать (признаться) ?
Третье - ты д'артаньян, не способный пройтись по ссылкам и воспринять информацию. Послнедний намёк: returning.
7 фев 19, 10:02    [21803245]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
Stax
триггер срабатывает, значит ето не OCI functions or DBMS_LOB
Станислав, включи мозг. DML триггера ловят DML события.
7 фев 19, 10:06    [21803247]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic, как это понимать??
Elic
Третье - ты д'артаньян



что опять??
-2-
Опять?!



так вы ссылки кидаете и намёками бросаетесь, а слабо написать нормально?)
или вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться?
7 фев 19, 10:18    [21803262]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1983
Elic
Stax
триггер срабатывает, значит ето не 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
7 фев 19, 10:51    [21803296]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 1983
chavchipav
или вы сами значит не знаете и делаете какие-то догадки, чтобы не спалиться?

знають!

но предлагают не рыбу, а удочку в пустыне ораклячей доки

....
stax
7 фев 19, 10:55    [21803302]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
перед тем как писать здесь, я прочитал документацию, но там не нашел описание поведения как в частности описал я.

поэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть...
7 фев 19, 11:04    [21803314]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
chavchipav
поэтому они и кидают доки, потому что сами их не прочитали видимо и ссылаются на них, думая, что там есть...
Самовлюблённый ламер, returning в приведённых ссылках искать не стал?
7 фев 19, 11:38    [21803356]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
Elic
Member

Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ
Сообщений: 29297
Stax
імхо, если он fire , то должен отрабатывать как с update и dbms_lob.getlength>0
Ты безнадёжен.
7 фев 19, 11:39    [21803360]     Ответить | Цитировать Сообщить модератору
 Re: Апдейт поля BLOB  [new]
chavchipav
Member

Откуда:
Сообщений: 11
Elic,

самовлюбленный и безнадежный по-моему здесь ты, если можешь только оскорблять и нормально на вопросы не отвечать
7 фев 19, 11:47    [21803367]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Oracle Ответить