|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Господа, с триггерами почти не работал, просьба сильно не пинать. Суть задачи такая - в клиенте (Delphi) запускаю sql запрос на обновление таблицы Код: sql 1. 2. 3.
Но в таком случае обновляются все записи в таблице с данным id_tabledoc Мне же надо обновить единственное поле с конкретным значение gtin Как мне сделать триггер на этой же таблице в базе чтобы было грубо говоря Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
ну в общем как грубо говоря отменить триггером обновление всех неподходящих строк, у которых id_tabledoc удовлетворяет условию, но другой gtin и обновить только одну строку с нужным gtin ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:24 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 16:24, арт2010 пишет: > ну в общем как грубо говоря отменить триггером обновление всех неподходящих строк, у которых > id_tabledoc удовлетворяет условию, но другой gtin > и обновить только одну строку с нужным gtin ты чо творишь?! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:25 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Мимопроходящий, решаю проблему. Возможно так вообще сделать? Или как-то по другому надо? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:26 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 16:26, арт2010 пишет: > Или как-то по другому надо? нужно апдейтить только то, что нужно. и не апдейтить то, что не нужно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:28 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
арт2010Или как-то по другому надо? Добавить условие в запрос мешает что? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:28 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Мимопроходящий, не поспоришь, но и так медленно работает. Если я еще буду выбирать для каждой строки открытого на клиенте дока доп. параметры для апдейта, это будет совсем медленно. Вот я и подумал что возможно как-то извернуться на триггерах ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:31 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Нет, тут програмист нужен. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:34 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 16:31, арт2010 пишет: > Мимопроходящий, не поспоришь, но и так медленно работает. > Если я еще буду выбирать для каждой строки открытого на клиенте дока > доп. параметры для апдейта, это будет совсем медленно. индексы отсутствуют? > Вот я и подумал что возможно как-то извернуться на триггерах нельзя "откатить" выборочные записи. можно перейти на MS SQL. тм есть виртуальные таблицы с изменёнными данными. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:35 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, ага. очень смешно. Ты же не знаешь всех условий моей задачи и какая херова туча разных таблиц апдейтится при сохранении одного дока и какие условия на время этого апдейта. Вопрос был конкретно про триггеры. Ну, если нельзя их так использовать, значит нельзя ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:37 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 16:37, арт2010 пишет: > Dimitry Sibiryakov, ага. очень смешно. Ты же не знаешь всех условий моей задачи и какая херова > туча разных таблиц апдейтится при сохранении одного дока и какие условия на время этого апдейта. > Вопрос был конкретно про триггеры. Ну, если нельзя их так использовать, значит нельзя а не пользуешься ли ты всякими ORM-ами? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:39 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
арт2010Ты же не знаешь всех условий моей задачи и какая херова туча разных таблиц апдейтится при сохранении одного дока и какие условия на время этого апдейта. Зато я знаю http://www.ibase.ru/dataaccesspaths/ и прочие способы обнаружения и устранения проблем с производительностью запросов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:42 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
феерический бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 16:56 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
арт2010, разберись а) с кавычками б) с понятием поле и запись ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:06 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Тему можно давно уже закрывать, чтобы не ждать пока каждый мегамозг соизволит высказаться ) Жалко до сих пор не добавили такую полезнейшую фичу ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:15 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 17:15, арт2010 пишет: > Жалко до сих пор не добавили такую полезнейшую фичу какую такую? я лично не до конца понял что конкретно ты хочешь получить и почему нормальные методы решения тебе не подходят. зы: а вообще похоже на вброс. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:18 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Мимопроходящий, да ладно, проехали, спасибо, ты единственный кто хоть реально попытался меня понять, а не до..капаться до кавычек. Вроде я нормально сформулировал свою мысль изначально - как сделать грубо говоря выборочный update c постусловием, которое не задано изначально, но будет известно уже в процессе срабатывания триггера BeforeUpdate (new.gtin = old.gtin или нет). Ну раз это изврат и не комильфо и вообще не реально на firebird, ну и замечательно. Уже нашел гораздо более логичный и экономичный способ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:22 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 17:22, арт2010 пишет: > да ладно, проехали, спасибо, ты единственный кто хоть реально попытался меня понять, > а не до..капаться до кавычек. Вроде я нормально сформулировал свою мысль изначально - > как сделать грубо говоря выборочный update c постусловием, которое не задано изначально, > но будет известно уже в процессе update (new.gtin = old.gtin или нет). у тебя в запросе нет этих полей. каким образом они должны быть задействованы? > Ну раз это изврат и не комильфо и вообще не реально на firebird, но и замечательно. реально многое. но ты не сформулировал изначальную задачу , а вместо этого привёл своё виденье того, как задача могла бы быть решена, если бы... так ты слона не продашь. © > Уже нашел гораздо более логичный и экономичный способ расскажи. интересно ж. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:27 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
арт2010 вообще не реально на firebird арт2010 Тему можно давно уже закрывать Но вдруг ты таки дельное что скажешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:36 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Мимопроходящий, ну вот я говорю - я не шарю как работают триггеры, поэтому и спросил. Я думал хоть поля gtin и нет в запросе, но так как оно есть в самой таблице, то триггер может отследить new.gtin = old.gtin. По крайней мере в IbExpert при создании триггера old и new доступны для всех полей и gtin в том числе. А сделать решил просто - как и советовали все таки задавать более конкретное условие при update, чтобы не приходилось ничего отбрасывать. Правда есть свои нюансы, по которым все равно невозможно сделать четкое условие where gtin = :gtin, ну да ладно, это уже частности, которые не должны помешать ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:38 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 17:38, арт2010 пишет: > Мимопроходящий, ну вот я говорю - я не шарю как работают триггеры, поэтому и спросил. > Я думал хоть поля gtin и нет в запросе, но так как оно есть в самой таблице, > то триггер может отследить new.gtin = old.gtin. стоп! стоп! если твой запрос это поле НЕ ЗАТРАГИВАЕТ, то с чего вдруг ему меняться? т.е. отчего возникнет new.gtin <> old.gtin ? > По крайней мере в IbExpert при создании триггера old и new доступны для всех полей и gtin в том числе. > А сделать решил просто - как и советовали все таки задавать более конкретное условие при update, > чтобы не приходилось ничего отбрасывать. > Правда есть свои нюансы, по которым все равно невозможно сделать четкое условие where gtin = :gtin почему? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:46 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
арт2010, Правильно ли я понял, что ты хочешь менять GTIN, но делать вид, будто не знаешь, меняешь ли его или нет, и проверять изменение в триггере? По-моему, в табличном поле, у колонки GTIN надо поставить галочку "только для чтения". Мимопроходящий какую такую? арт2010 чтобы не ждать пока каждый мегамозг соизволит высказаться ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:50 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
15.03.2021 17:50, WildSery пишет: > По-моему, в табличном поле, у колонки GTIN надо поставить галочку "только для чтения". твой шар мощнее моего Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 17:53 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
арт2010 ...Ты же не знаешь всех условий моей задачи и какая херова туча разных таблиц апдейтится при сохранении одного дока и какие условия на время этого апдейта. Вопрос был конкретно про триггеры. Ну, если нельзя их так использовать, значит нельзя То есть, ты не понимаешь, как работают триггеры, но при этом понимаешь все остальное? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 18:02 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
Если число в никнейме означает год рождения, то это многое объясняет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 18:28 |
|
Отменить триггером update конкретной строки таблицы Firebird 2.5
|
|||
---|---|---|---|
#18+
арт2010Я думал хоть поля gtin и нет в запросе, но так как оно есть в самой таблице, то триггер может отследить new.gtin = old.gtin. если столбец gtin не меняется, так в триггере всегда будет new.gtin = old.gtin. А если оно задается в запросе, то его надо ставить в where. Передать "параметр :pGTIN" в триггер никак нельзя, только в процедуру. В параметр список значений тоже передать нельзя. Можно передать строкой в процедуру, а в процедуре эту строку распарсить на куски. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.03.2021, 18:29 |
|
|
start [/forum/topic.php?fid=40&fpage=8&tid=1560091]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 231ms |
total: | 419ms |
0 / 0 |