|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
есть табла t1 ( id name) могу написать select rowid,id,name from t1 а вот как в триггере for each rows определить rowid для которой сработал этот триггер? Informix 7 какойто-там ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2009, 16:40 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700 select rowid,id,name from t1 а вот как в триггере for each rows определить rowid для которой сработал этот триггер? НЕ НУЖНО ИСПОЛЬЗОВАТЬ rowid ! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2009, 17:52 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
великолепный ответ, сразу видно проффесиОНАЛ поясню, в таблице нет первичного ключа. сделать не могу, система унаследована и не позволяют этого сделать. необходимо сделать журнал изменений данных в таблице по аналогии с Oracle materialized view log есть знания как в триггере получить rowid и есть желание, возможность поделиться этим знанием - научите пожалуйста. Есть альтернативные решения того, что "необходимо сделать.." - поделитесь ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 09:06 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700великолепный ответ, сразу видно проффесиОНАЛ поясню, в таблице нет первичного ключа. сделать не могу, система унаследована и не позволяют этого сделать. необходимо сделать журнал изменений данных в таблице по аналогии с Oracle materialized view log есть знания как в триггере получить rowid и есть желание, возможность поделиться этим знанием - научите пожалуйста. Есть альтернативные решения того, что "необходимо сделать.." - поделитесь Сразу виден чайник. Вместо того чтобы с самого начала спросить как пройти в библиотеку, спрашивает который час. В триггере у вас и так есть вся строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 11:05 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
Марио Пьюзо "Крёстный Отец"Бывают на свете люди, которые ходят и просят - прямо-таки требуют, - чтобы их убили. Ты сам, наверное, замечал. Они скандалят на стадионе, набрасываются на тебя с кулаками, если ты оставил царапину на крыле их машины, оскорбляют первого встречного, не утруждая себя вопросом, на что этот человек способен. Они топают по земле, вопя: "Вот он я! Убейте меня!" И в желающих, как правило, нет недостатка. Мы каждый день читаем про это в газетах. Естественно, что люди этой породы приносят и другим много вреда. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 11:34 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
Журавлев Денис, Вы совершенно правы, я информикс не знаю совершенно (и с удовольствием бы не знал и далее) Относительно вашей реплики о том, что в триггере мне доступны old и new значения всех полей я знаю Но мне не нужны они, мне нужна однозначная идентификация строки таблицы над которой произошла операция. Все поняли, что я чайник, но именно поэтому я и обратился к Вам гуру Информикса. И что я получаю, один только поучительные советы про жизнь. Неужели нет тут истинных.... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 14:20 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700Журавлев Денис, Вы совершенно правы, я информикс не знаю совершенно (и с удовольствием бы не знал и далее) Относительно вашей реплики о том, что в триггере мне доступны old и new значения всех полей я знаю Но мне не нужны они, мне нужна однозначная идентификация строки таблицы над которой произошла операция. Все поняли, что я чайник, но именно поэтому я и обратился к Вам гуру Информикса. И что я получаю, один только поучительные советы про жизнь. Неужели нет тут истинных.... Истинных полно, только они не помогают тем, кто с удовольствием не хочет знать то о чем спрашивают. Те кто не хочет знать, платят деньги и получают результат. Если по существу, после того как вы удалите некоторые записи, и после добавления новых записей ваши старые rowid старых записей могут принадлежать совсем другим новым записям. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 14:56 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
onstat- Если по существу, после того как вы удалите некоторые записи, и после добавления новых записей ваши старые rowid старых записей могут принадлежать совсем другим новым записям. Наконец то по существу, я это знаю и меня это устраивает. А по поводу вопроса: абстрогируйтесь от моей цели, вопрос короткий и полностью сформированый "как в триггере получить rowid записи над которой произошла операция" и мне хотельсь бы найти человека знающего ответ именно на этот вопрос, мне не нужны, на этом этапе, коментарии типа "НЕ ИСПОЛЬЗУЙ..." ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 15:11 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700 мне не нужны, на этом этапе, коментарии типа "НЕ ИСПОЛЬЗУЙ..." Перефразируя onstat-: не нужны комментарии - плати деньги, а не пиши на общественный форум... Любой модератор тот комментарий за оффтоп не посчитает... Хотя, возможно, мой - запросто... Читай правила... ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 15:30 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
АнатоЛойorion700 мне не нужны, на этом этапе, коментарии типа "НЕ ИСПОЛЬЗУЙ..." Перефразируя onstat-: не нужны комментарии - плати деньги, а не пиши на общественный форум... Любой модератор тот комментарий за оффтоп не посчитает... Хотя, возможно, мой - запросто... Читай правила... +1. ( жирный) Суть форума не только в том, что бы помочь конкретному человеку, для этого можно нанять консалтинг за деньги, или обратиться в ранее оплаченный саппорт, результат будет более качественный особенно с подходом "не хочу знать". а в том что бы показать сообществу как могут решаться определенные прикладные задачи. Здесь общаются люди желающие знать. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 15:52 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700 поясню, в таблице нет первичного ключа. сделать не могу, система унаследована и не позволяют этого сделать. необходимо сделать журнал изменений данных в таблице по аналогии с Oracle materialized view log есть знания как в триггере получить rowid и есть желание, возможность поделиться этим знанием - научите пожалуйста. Без этого комментария отвечать точно было бы очень тяжело... orion700 Есть альтернативные решения того, что "необходимо сделать.." - поделитесь Странности: триггер написать дают, а поле SERIAL добавить не дают? Значит клиент без переделок не может работать - типа BDE или ещё чего... В такой ситуации логируйте в триггере запись полностью : и старую версию и новую ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 15:59 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700мне нужна однозначная идентификация строки таблицы над которой произошла операция. зачем? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 16:08 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2009, 21:13 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
Выбегалло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 и вообще мне непонятно, для чего очень надо различить записи, которые различить невозможно ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 09:28 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
Тан rowid может меняться при update, если строка не влезла на старое место Дополнение : У строки на протяжении некоторого времени может быть 2 rowid. Один непосредственно rowid строки, другой ссылка на него. Изменение rowid, появление ссылки и ее удаление не ловится никакими триггерами. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 10:59 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
Тан 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. Это действительно так? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:06 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700есть табла t1 ( id name) что вы хотите иметь в вашем матвью? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:15 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
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. Это действительно так? По ходу да, причем на одной версии сервера при одинаковых условиях это может произойти, на другой нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:18 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700, 1 вопрос 14 сообщений и только в последнем и предпоследнем ответ на вопрос так ли были необходимы те 12, что посередине Хотя я из них я все же многое выяснил, например, что я чайнег в инхформихс ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:22 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
Журавлев Денисчто вы хотите иметь в вашем матвью? Да, собственно, хатю в инхформиксе реализовать аналог Oracle манвью логов которые на rowid а не на первичных ключах планруется реплицировать эти логи в Oracle где используя их формировать состояния таблицы на определенные моменты времени например каждые 6 часов. PS: подозреваю, сейчас начнется, а зачем вам это :) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:27 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700orion700, 1 вопрос 14 сообщений и только в последнем и предпоследнем ответ на вопрос так ли были необходимы те 12, что посередине Хотя я из них я все же многое выяснил, например, что я чайнег в инхформихс На Ваш 1-й вопрос правильный ответ прозвучал во 2-ром сообщении. Если бы Вы предварительно почитали правила форума, и как правильно задавать вопросы, и следовали этим правилам то исчерпывающие ответы и дополнения были бы в 5 первых сообщениях. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:34 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700, на самом деле такое мат вью в оракле будет делать delete from mat_view_table; insert into mat_view_table select * from source_table; commit; делайте тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:35 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
Журавлев Денисorion700, на самом деле такое мат вью в оракле будет делать delete from mat_view_table; insert into mat_view_table select * from source_table; commit; делайте тоже самое. Денис мне не нужны матвъю мне нужны матвъю логи!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 11:56 |
|
как определить rowid в тригере
|
|||
---|---|---|---|
#18+
orion700Журавлев Денисчто вы хотите иметь в вашем матвью? Да, собственно, хатю в инхформиксе реализовать аналог Oracle манвью логов которые на rowid а не на первичных ключах Хотите делайте, никто вам этого не запрещает, Совет 1. Получайте rowid из первичного ключа ( без чтения таблицы) там будет rowid записи которая была вставлена, если запись была сервером перемещена, то это будет уже ссылка на новый rowid. Совет 2. Как достать rowid из превичного ключа смотрите и пишите свой датаблейд. совет 3 . Если запись была перемещена, и произойдет явная или неявная перестройка индекса первичного ключа, то rowid разъедутся. Ваш датаблейд должен это учитывать. Удачи. з.ы. Нет невыполнимых задач в любой постановке, есть недостаток ресурсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2009, 12:13 |
|
|
start [/forum/topic.php?fid=44&tid=1607825]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 338ms |
total: | 497ms |
0 / 0 |