Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / как определить rowid в тригере / 25 сообщений из 29, страница 1 из 2
20.05.2009, 16:40
    #35997090
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
есть табла
t1 (
id
name)

могу написать
select rowid,id,name from t1

а вот как в триггере for each rows определить rowid для которой сработал этот триггер?

Informix 7 какойто-там
...
Рейтинг: 0 / 0
20.05.2009, 17:52
    #35997377
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700
select rowid,id,name from t1
а вот как в триггере for each rows определить rowid для которой сработал этот триггер?
НЕ НУЖНО ИСПОЛЬЗОВАТЬ rowid !
...
Рейтинг: 0 / 0
21.05.2009, 09:06
    #35998076
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
великолепный ответ, сразу видно проффесиОНАЛ

поясню, в таблице нет первичного ключа.
сделать не могу, система унаследована и не позволяют этого сделать.

необходимо сделать журнал изменений данных в таблице
по аналогии с Oracle materialized view log

есть знания как в триггере получить rowid и есть желание, возможность поделиться этим знанием - научите пожалуйста.

Есть альтернативные решения того, что "необходимо сделать.." - поделитесь
...
Рейтинг: 0 / 0
21.05.2009, 11:05
    #35998400
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700великолепный ответ, сразу видно проффесиОНАЛ

поясню, в таблице нет первичного ключа.
сделать не могу, система унаследована и не позволяют этого сделать.

необходимо сделать журнал изменений данных в таблице
по аналогии с Oracle materialized view log

есть знания как в триггере получить rowid и есть желание, возможность поделиться этим знанием - научите пожалуйста.

Есть альтернативные решения того, что "необходимо сделать.." - поделитесь
Сразу виден чайник. Вместо того чтобы с самого начала спросить как пройти в библиотеку, спрашивает который час.

В триггере у вас и так есть вся строка.
...
Рейтинг: 0 / 0
21.05.2009, 11:34
    #35998515
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
Марио Пьюзо "Крёстный Отец"Бывают на свете люди, которые ходят и просят - прямо-таки требуют, - чтобы их убили. Ты сам, наверное, замечал. Они скандалят на стадионе, набрасываются на тебя с кулаками, если ты оставил царапину на крыле их машины, оскорбляют первого встречного, не утруждая себя вопросом, на что этот человек способен. Они топают по земле, вопя: "Вот он я! Убейте меня!" И в желающих, как правило, нет недостатка. Мы каждый день читаем про это в газетах. Естественно, что люди этой породы приносят и другим много вреда.
...
Рейтинг: 0 / 0
21.05.2009, 14:20
    #35999174
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
Журавлев Денис,

Вы совершенно правы, я информикс не знаю совершенно (и с удовольствием бы не знал и далее)
Относительно вашей реплики о том, что в триггере мне доступны old и new значения всех полей я знаю
Но мне не нужны они, мне нужна однозначная идентификация строки таблицы над которой произошла операция.

Все поняли, что я чайник, но именно поэтому я и обратился к Вам гуру Информикса.
И что я получаю, один только поучительные советы про жизнь.
Неужели нет тут истинных....
...
Рейтинг: 0 / 0
21.05.2009, 14:56
    #35999351
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700Журавлев Денис,

Вы совершенно правы, я информикс не знаю совершенно (и с удовольствием бы не знал и далее)
Относительно вашей реплики о том, что в триггере мне доступны old и new значения всех полей я знаю
Но мне не нужны они, мне нужна однозначная идентификация строки таблицы над которой произошла операция.

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

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

Если по существу, после того как вы удалите некоторые записи, и после добавления новых записей ваши старые rowid старых записей могут принадлежать
совсем другим новым записям.
...
Рейтинг: 0 / 0
21.05.2009, 15:11
    #35999404
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
onstat-
Если по существу, после того как вы удалите некоторые записи, и после добавления новых записей ваши старые rowid старых записей могут принадлежать
совсем другим новым записям.

Наконец то по существу, я это знаю и меня это устраивает.

А по поводу вопроса: абстрогируйтесь от моей цели, вопрос короткий и полностью сформированый
"как в триггере получить rowid записи над которой произошла операция"

и мне хотельсь бы найти человека знающего ответ именно на этот вопрос,
мне не нужны, на этом этапе, коментарии типа "НЕ ИСПОЛЬЗУЙ..."
...
Рейтинг: 0 / 0
21.05.2009, 15:30
    #35999466
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700
мне не нужны, на этом этапе, коментарии типа "НЕ ИСПОЛЬЗУЙ..."
Перефразируя onstat-: не нужны комментарии - плати деньги, а не пиши на общественный форум...
Любой модератор тот комментарий за оффтоп не посчитает... Хотя, возможно, мой - запросто...
Читай правила...
...
Рейтинг: 0 / 0
21.05.2009, 15:52
    #35999542
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
АнатоЛойorion700
мне не нужны, на этом этапе, коментарии типа "НЕ ИСПОЛЬЗУЙ..."
Перефразируя onstat-: не нужны комментарии - плати деньги, а не пиши на общественный форум...
Любой модератор тот комментарий за оффтоп не посчитает... Хотя, возможно, мой - запросто...
Читай правила...

+1. ( жирный)

Суть форума не только в том, что бы помочь конкретному человеку, для этого можно нанять консалтинг за деньги, или обратиться в ранее оплаченный саппорт, результат будет более качественный особенно с подходом "не хочу знать".

а в том что бы показать сообществу как могут решаться определенные прикладные задачи.
Здесь общаются люди желающие знать.
...
Рейтинг: 0 / 0
21.05.2009, 15:59
    #35999574
АнатоЛой
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700
поясню, в таблице нет первичного ключа.
сделать не могу, система унаследована и не позволяют этого сделать.

необходимо сделать журнал изменений данных в таблице
по аналогии с Oracle materialized view log

есть знания как в триггере получить rowid и есть желание, возможность поделиться этим знанием - научите пожалуйста.

Без этого комментария отвечать точно было бы очень тяжело...

orion700
Есть альтернативные решения того, что "необходимо сделать.." - поделитесь

Странности: триггер написать дают, а поле SERIAL добавить не дают? Значит клиент без переделок не может работать - типа BDE или ещё чего...
В такой ситуации логируйте в триггере запись полностью : и старую версию и новую
...
Рейтинг: 0 / 0
21.05.2009, 16:08
    #35999626
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700мне нужна однозначная идентификация строки таблицы над которой произошла операция.
зачем?
...
Рейтинг: 0 / 0
21.05.2009, 21:13
    #36000480
Выбегалло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700есть табла
t1 (
id
name)

могу написать
select rowid,id,name from t1

а вот как в триггере for each rows определить rowid для которой сработал этот триггер?

Informix 7 какойто-там


если вас не смущает, что rowid может переприсваиваться новой записи, то следовательно у вас нет удаления из таблицы. Значит, rowid растет монотонно. Значит, в SP внутри триггера можно получить настоящее rowid выполнив SELECT max(rowid) from t1 where id = new_id and name = new_name.
...
Рейтинг: 0 / 0
22.05.2009, 09:28
    #36000920
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
Выбегаллоorion700есть табла
t1 (
id
name)

могу написать
select rowid,id,name from t1

а вот как в триггере for each rows определить rowid для которой сработал этот триггер?

Informix 7 какойто-там


если вас не смущает, что rowid может переприсваиваться новой записи, то следовательно у вас нет удаления из таблицы. Значит, rowid растет монотонно. Значит, в SP внутри триггера можно получить настоящее rowid выполнив SELECT max(rowid) from t1 where id = new_id and name = new_name.
rowid может меняться при update, если строка не влезла на старое место
а если триггер у него не на insert, то max(rowid) может быть и не от той строки rowid
и вообще мне непонятно, для чего очень надо различить записи, которые различить невозможно
...
Рейтинг: 0 / 0
22.05.2009, 10:59
    #36001162
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
Тан
rowid может меняться при update, если строка не влезла на старое место


Дополнение :
У строки на протяжении некоторого времени может быть 2 rowid.
Один непосредственно rowid строки, другой ссылка на него.

Изменение rowid, появление ссылки и ее удаление не ловится никакими триггерами.
...
Рейтинг: 0 / 0
22.05.2009, 11:06
    #36001191
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
Тан
rowid может меняться при update, если строка не влезла на старое место
а если триггер у него не на insert, то max(rowid) может быть и не от той строки rowid
и вообще мне непонятно, для чего очень надо различить записи, которые различить невозможно

я правильно понял что:
момент времени 1 - имеем запись (rowid,id,name) = ( 257 ,1,'test')
момент времени 2 - update t set name='бла-бла-бла' where id=1
момент времени 3 - можем иметь запись (rowid,id,name) = ( xxx ,1,'бла-бла-бла')

то-есть Инф переместил запись, хотя не важно переместил он её или нет, но действительно у той самой записи сменился rowid.
Это действительно так?
...
Рейтинг: 0 / 0
22.05.2009, 11:15
    #36001220
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700есть табла
t1 (
id
name)

что вы хотите иметь в вашем матвью?
...
Рейтинг: 0 / 0
22.05.2009, 11:18
    #36001230
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700Тан
rowid может меняться при update, если строка не влезла на старое место
а если триггер у него не на insert, то max(rowid) может быть и не от той строки rowid
и вообще мне непонятно, для чего очень надо различить записи, которые различить невозможно

я правильно понял что:
момент времени 1 - имеем запись (rowid,id,name) = ( 257 ,1,'test')
момент времени 2 - update t set name='бла-бла-бла' where id=1
момент времени 3 - можем иметь запись (rowid,id,name) = ( xxx ,1,'бла-бла-бла')

то-есть Инф переместил запись, хотя не важно переместил он её или нет, но действительно у той самой записи сменился rowid.
Это действительно так?

По ходу да, причем на одной версии сервера при одинаковых условиях это может произойти, на другой нет.
...
Рейтинг: 0 / 0
22.05.2009, 11:22
    #36001246
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700,

1 вопрос
14 сообщений
и только в последнем и предпоследнем ответ на вопрос

так ли были необходимы те 12, что посередине

Хотя я из них я все же многое выяснил, например, что я чайнег в инхформихс
...
Рейтинг: 0 / 0
22.05.2009, 11:27
    #36001271
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
Журавлев Денисчто вы хотите иметь в вашем матвью?

Да, собственно, хатю в инхформиксе реализовать аналог Oracle манвью логов которые на rowid а не на первичных ключах

планруется реплицировать эти логи в Oracle где используя их формировать состояния таблицы
на определенные моменты времени
например каждые 6 часов.

PS: подозреваю, сейчас начнется, а зачем вам это :)
...
Рейтинг: 0 / 0
22.05.2009, 11:34
    #36001302
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700orion700,

1 вопрос
14 сообщений
и только в последнем и предпоследнем ответ на вопрос

так ли были необходимы те 12, что посередине

Хотя я из них я все же многое выяснил, например, что я чайнег в инхформихс

На Ваш 1-й вопрос правильный ответ прозвучал во 2-ром сообщении.
Если бы Вы предварительно почитали правила форума, и как правильно задавать вопросы,
и следовали этим правилам то исчерпывающие ответы и дополнения были
бы в 5 первых сообщениях.
...
Рейтинг: 0 / 0
22.05.2009, 11:35
    #36001306
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700,

на самом деле такое мат вью в оракле будет делать
delete from mat_view_table;
insert into mat_view_table select * from source_table;
commit;
делайте тоже самое.
...
Рейтинг: 0 / 0
22.05.2009, 11:56
    #36001410
orion700
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
Журавлев Денисorion700,

на самом деле такое мат вью в оракле будет делать
delete from mat_view_table;
insert into mat_view_table select * from source_table;
commit;
делайте тоже самое.

Денис мне не нужны матвъю мне нужны матвъю логи!!!
...
Рейтинг: 0 / 0
22.05.2009, 12:13
    #36001485
onstat-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700Журавлев Денисчто вы хотите иметь в вашем матвью?

Да, собственно, хатю в инхформиксе реализовать аналог Oracle манвью логов которые на rowid а не на первичных ключах



Хотите делайте, никто вам этого не запрещает,

Совет 1.
Получайте rowid из первичного ключа ( без чтения таблицы)
там будет rowid записи которая была вставлена,
если запись была сервером перемещена, то это будет уже ссылка на новый rowid.

Совет 2.
Как достать rowid из превичного ключа смотрите и пишите свой датаблейд.

совет 3 .
Если запись была перемещена, и произойдет явная или неявная перестройка индекса
первичного ключа, то rowid разъедутся. Ваш датаблейд должен это учитывать.


Удачи.

з.ы.
Нет невыполнимых задач в любой постановке, есть недостаток ресурсов.
...
Рейтинг: 0 / 0
22.05.2009, 12:22
    #36001518
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как определить rowid в тригере
orion700
Денис мне не нужны матвъю мне нужны матвъю логи!!!таблица большая? Сколько записей?
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / как определить rowid в тригере / 25 сообщений из 29, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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