powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Триггеры... Поделитесь опытом
38 сообщений из 38, показаны все 2 страниц
Триггеры... Поделитесь опытом
    #34300512
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо при изменении данных в таблице автоматически обновлялись данные в других таблицах... Лучше делать все в одном триггере или разбивать на несколько? Поделитесь опытом....
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301106
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Триггеры никогда не могут быть UR???? Это ведь на самом деле так?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301136
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как найти для процедуры пакет?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301424
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTНеобходимо при изменении данных в таблице автоматически обновлялись данные в других таблицах... Лучше делать все в одном триггере или разбивать на несколько? Поделитесь опытом....Все равно.
TORTТриггеры никогда не могут быть UR???? Это ведь на самом деле так?Триггеры наследуют уровень изоляции вызывающего приложения.
Если надо его менять по ходу выполнения - используйте вызов процедуры из триггера.
TORTКак найти для процедуры пакет?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT
R.ROUTINESCHEMA, R.ROUTINENAME,
P.PKGSCHEMA, P.PKGNAME
, d.btype
FROM SYSCAT.ROUTINES R 
JOIN SYSCAT.ROUTINEDEP D 
ON  R.ROUTINESCHEMA = D.ROUTINESCHEMA
AND R.SPECIFICNAME  = D.ROUTINENAME 
JOIN SYSCAT.PACKAGES P
ON  D.BSCHEMA = P.PKGSCHEMA
AND D.BNAME   = P.PKGNAME;
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301426
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть 2 триггера на одинаковое событие, допустим after update... Какой триггер срабатывает первым?
В триггере использую оператор merge, так вот он вызывает блокировку всей таблицы, которую обновляю через merge... Возникают постоянные блокировки... Чего-то никак не могу разрулить....
Кто подскажет выход?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301446
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Mark:
спасибо за информацию....
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301474
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTЕсли есть 2 триггера на одинаковое событие, допустим after update... Какой триггер срабатывает первым?Тот, который первым создан.
TORTВ триггере использую оператор merge, так вот он вызывает блокировку всей таблицы, которую обновляю через merge... Возникают постоянные блокировки... Чего-то никак не могу разрулить....
Кто подскажет выход?Покажите этот merge и ddl таблиц с индексами, которые там участвуют.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301557
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот триггер:

CREATE TRIGGER DB2ADMIN.CHK_SALDO2
AFTER DELETE
ON DB2ADMIN.PROVOD REFERENCING OLD_TABLE as old
FOR EACH STATEMENT MODE DB2SQL
BEGIN atomic
merge into DB2ADMIN.saldo as a
using (select podrazd_id, debet_id, debet_partner_id, debet_analitika_id, sum(summa) as summa
from old group by podrazd_id, debet_id, debet_partner_id, debet_analitika_id) as b
on a.podrazd_id = b.podrazd_id
and a.subcount_id = b.debet_id
and a.partner_id = b.debet_partner_id
and a.analitika_id = b.debet_analitika_id
when matched then update set summa_debet = summa_debet - b.summa;

merge into DB2ADMIN.saldo as a
using (select podrazd_id, kredit_id, kredit_partner_id, kredit_analitika_id, sum(summa) as summa
from old group by podrazd_id, kredit_id, kredit_partner_id, kredit_analitika_id) as b
on a.podrazd_id = b.podrazd_id
and a.subcount_id = b.kredit_id
and a.partner_id = b.kredit_partner_id
and a.analitika_id = b.kredit_analitika_id
when matched then update set summa_kredit = summa_kredit - b.summa;

END

Вот такая таблица:
CREATE TABLE "DB2ADMIN"."SALDO" (
"PODRAZD_ID" BIGINT NOT NULL ,
"SUBCOUNT_ID" BIGINT NOT NULL ,
"PARTNER_ID" BIGINT NOT NULL ,
"ANALITIKA_ID" BIGINT NOT NULL ,
"SUMMA_DEBET" DECIMAL(20,2) NOT NULL ,
"SUMMA_KREDIT" DECIMAL(20,2) NOT NULL ,
"PODRAZD_PARTNER" BIGINT NOT NULL )
IN "DATA" INDEX IN "INDEX_8" ;
ALTER TABLE "DB2ADMIN"."SALDO" PCTFREE 20;

-- Операторы DDL для индексов таблицы "DB2ADMIN"."SALDO"

CREATE INDEX "DB2ADMIN"."IND1_SALDO" ON "DB2ADMIN"."SALDO"
("PODRAZD_PARTNER" ASC)
PCTFREE 10 MINPCTUSED 10
ALLOW REVERSE SCANS;

-- Операторы DDL для индексов таблицы "DB2ADMIN"."SALDO"

CREATE INDEX "DB2ADMIN"."IND2_SALDO" ON "DB2ADMIN"."SALDO"
("PARTNER_ID" ASC)
PCTFREE 10 MINPCTUSED 10

ALLOW REVERSE SCANS;


-- Операторы DDL для первичных ключей таблицы "DB2ADMIN"."SALDO"

ALTER TABLE "DB2ADMIN"."SALDO"
ADD CONSTRAINT "CC1166263937297" PRIMARY KEY
("PODRAZD_ID",
"SUBCOUNT_ID",
"PARTNER_ID",
"ANALITIKA_ID");

Вот так пытаюсь сделать....
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301688
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сделайте
runstats on table db2admin.saldo and indexes all
и покажите план запроса для этого merge.
Какой процент записей обновляется в db2admin.saldo при удалении из db2admin.provod?

И еще: вы не "ослабите" эксклюзивные блокировки уровнем изоляции UR:
Если вы изменили некоторую строку, то эксклюзивная блокировка этой строки останется до конца транзакции при любом уровне изоляции.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301713
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так строка - это ничего страшного... Зачем же блокируется целая таблица? Я увеличил locklist, но это не помогает....
После runstats нужно пересобирать триггеры?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301735
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процент очень-очень не большой.... Там и процентом-то нельзя назвать.... А maxlocks стоит 22(по умолчанию)... LOcklist на всякий выставил 4096*4Kb... Вроде все должно хватать.....
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301754
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTПосле runstats нужно пересобирать триггеры?Нет.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301785
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Explain.sql выдает стоимость 143,76....
При работе с таблицей saldo используется индекс CC1166263937297
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301877
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTExplain.sql выдает стоимость 143,76....
При работе с таблицей saldo используется индекс CC1166263937297Как же у вас тогда вся таблица блокируется?
Как вы это определили?

Может:
1. Уровень изоляции приложения - RR?
2. У таблицы LOCKSIZE сделали TABLE?
3. Приложение коммититься забывает?

Сделайте
UPDATE MONITOR SWITCHES USING LOCK ON
UPDATE COMMAND OPTIONS USING C OFF
DELETE FROM DB2ADMIN.PROVOD ...
GET SNAPSHOT FOR LOCKS FOR APPLICATION AGENTID ваш_номер_агента

Вывод последней команды покажите.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301919
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Определил с помощью Quest'а.... В момент когда происходит удаление из db2admin.provod возникает блокировка Exclusive(S) на таблицу SALDO.....
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301921
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон Exclusive(X)
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34301935
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И размер блокировки на таблицу - Строка.....:(
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34302005
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Снимок блокировок программы

Отметка времени снимка = 02.02.20

Хэндл прикладной программы = 586
ID прикладной программы = *LOCAL
Номер последовательности = 0001
Имя прикладной программы = db2bp.
ID авторизации CONNECT = db2adm
Состояние прикладной программы = Рабоча
Время изменения статуса = Не соб
Кодовая страница прикладной программы = 1251
Блокировок поддерживается = 9
Общее время ожидания (мс) = 0

Список блокировок
Имя блокировки = 0x050010002D413E010000000052
Атрибуты блокировки = 0x00000000
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 20857133
Тип объекта = Строка
Имя табличного пространства = DATA
Схема таблицы = db2admin
Имя таблицы = SALDO
Режим = X

Имя блокировки = 0x050010002E413E010000000052
Атрибуты блокировки = 0x00000000
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 20857134
Тип объекта = Строка
Имя табличного пространства = DATA
Схема таблицы = db2admin
Имя таблицы = SALDO
Режим = X

Имя блокировки = 0x0500100040991E010000000052
Атрибуты блокировки = 0x00000000
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 18782528
Тип объекта = Строка
Имя табличного пространства = DATA
Схема таблицы = db2admin
Имя таблицы = SALDO
Режим = X

Имя блокировки = 0x0500070045500D020000000052
Атрибуты блокировки = 0x00000020
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 34426949
Тип объекта = Строка
Имя табличного пространства = DATA
Схема таблицы = db2admin
Имя таблицы = PROVOD
Режим = X

Имя блокировки = 0x0500070044500D020000000052
Атрибуты блокировки = 0x00000020
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 34426948
Тип объекта = Строка
Имя табличного пространства = DATA
Схема таблицы = db2admin
Имя таблицы = PROVOD
Режим = X

Имя блокировки = 0x53514C4332453036BD4A32C841
Атрибуты блокировки = 0x00000000
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 0
Тип объекта = Внутренн
Режим = S

Имя блокировки = 0x53514C4445464C5428DD630641
Атрибуты блокировки = 0x00000000
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 0
Тип объекта = Внутренн
Режим = S

Имя блокировки = 0x05000700000000000000000054
Атрибуты блокировки = 0x00000000
Флаги освобождения = 0x40000000
Число блокировок = 1
Число удержаний = 0
Имя объекта блокировки = 7
Тип объекта = Таблица
Имя табличного пространства = DATA
Схема таблицы = db2admin
Имя таблицы = PROVOD
Режим = IX

Имя блокировки = 0x05001000000000000000000054
Атрибуты блокировки = 0x00000000
Флаги освобождения = 0x40000000
Число блокировок = 2
Число удержаний = 0
Имя объекта блокировки = 16
Тип объекта = Таблица
Имя табличного пространства = DATA
Схема таблицы = db2admin
Имя таблицы = SALDO
Режим = IX
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34302091
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так это...
Все нормально у вас, эксклюзивно таблицы не блокируются.
Может, quest не отличает IX блокировки таблицы от X?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34302119
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам вот сижу и думаю....
В любом случае спасибо за советы...
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34302176
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если это делается в хранимой процедуре? Монитор блокировки будет фиксировать?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34302337
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так... На всякий....
Одна процедура = Один пакет?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34302494
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTА если это делается в хранимой процедуре? Монитор блокировки будет фиксировать?Да.
TORTОдна процедура = Один пакет?Да.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34302519
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кажется нашел момент... Может для вас очевидный, я же его упустил....
В общем дело так....
Записи из таблицы provod удаляются также триггером, повешенным на другую таблицу!!!
Так вот, если делать Explain на delete from provod...., то индексы по saldo хватаются....
А если через еще один триггер, то нет...
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34374642
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Опять на те же грабли.... Где архитектурно могу ошибаться?
Есть таблица1, таблица2, таблица3....
При изменении таблицы1, изменяется таблица2.
При изменении таблицы2, изменяется таблица3.
Все это организовал на триггерах... По-моему очень удобно получилось...
Но при тестировании получается, что одна программа, изменяя таблицу1 эксклюзивно блокирует таблицу3... Соответственно все остальные приложения "курят"... К тому же, таблица1 изменяется довольно часто и совсем небольшими порциями...
1.Где чего не так понимаю?
И главное.... Так вообще делают или за это руки "отрывают"....?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34374655
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вот еще для уточнения... 99,99% операций над таблицей2 - это insert/delete/select.... Причем как правило вызываются в ХП... Update практически отсутствует...
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34374703
TORTОпять на те же грабли.... Где архитектурно могу ошибаться?
Есть таблица1, таблица2, таблица3....
При изменении таблицы1, изменяется таблица2.
При изменении таблицы2, изменяется таблица3.
Все это организовал на триггерах... По-моему очень удобно получилось...
Но при тестировании получается, что одна программа, изменяя таблицу1 эксклюзивно блокирует таблицу3... Соответственно все остальные приложения "курят"... К тому же, таблица1 изменяется довольно часто и совсем небольшими порциями...
1.Где чего не так понимаю?
И главное.... Так вообще делают или за это руки "отрывают"....?

Не проще ли в таком случае сделать это через репликацию данных?
Триггеры будут не нужны.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34374748
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Репликация, по скромному опыту, тоже здорово блокирует данные...
2. Смысл этих изменений (не знаю как по-научному высказаться), в том чтобы сразу отображать сделанные изменения....Например, грохнул документ - удалились(или хотя бы попытались) связанные с ним... Или другой пример, удалил документ - удалились товарные строки, связанные с ним, и как следствие изменились остатки....
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34374830
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTгрохнул документ - удалились(или хотя бы попытались) связанные с ним... Или другой пример, удалил документ - удалились товарные строки, связанные с ним, и как следствие изменились остатки....Вы можете поэкспериментировать с:
1. Уровнями оптимизации (3, 5, 7, может даже 2)
2. сделать триггер for each row на таблицу2
3. merge заменить на update

У вас, кстати, версия db2 какая?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34374841
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DB2 v.8.1.9 for Win
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34374866
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Mark:
1.Насчет уровня оптимизации... Это где его использовать? В SQL внутри триггера? Или при создании триггера?
2. Вы правильно подметили, я использую в триггерах спецификацию FOR EACH STATEMENT... Вы думаете DB2 из-за нее так распространяет блокировки?
3. А вот с update'ом вообще мыслей нет... Мне кажется в данном случае можно попробовать как-нибудь пары моих merge попробовать объединить?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34375071
TORT1. Репликация, по скромному опыту, тоже здорово блокирует данные...
2. Смысл этих изменений (не знаю как по-научному высказаться), в том чтобы сразу отображать сделанные изменения....Например, грохнул документ - удалились(или хотя бы попытались) связанные с ним... Или другой пример, удалил документ - удалились товарные строки, связанные с ним, и как следствие изменились остатки....

Репликация работает по логам. Т.е. как минимум не будет блокировок на первичную таблицу.
Да и во время записи во вторичные таблицы блокировок должно быть меньше.
Хотя конечно данные во вторичных таблицах будут изменяться с задержкой.

А внешние ключи (Foreign Key) с каскадным удалением никак не применить в этом случае? По описанию вроде самое оно.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34375139
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORT1.Насчет уровня оптимизации... Это где его использовать? В SQL внутри триггера? Или при создании триггера?Перед операцией изменения данных в table1
TORT2. Вы правильно подметили, я использую в триггерах спецификацию FOR EACH STATEMENT... Вы думаете DB2 из-за нее так распространяет блокировки?Всяко может быть.
TORT3. А вот с update'ом вообще мыслей нет... Мне кажется в данном случае можно попробовать как-нибудь пары моих merge попробовать объединить?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
merge into DB2ADMIN.saldo as a
using (select podrazd_id, debet_id, debet_partner_id, debet_analitika_id, sum(summa) as summa
from old group by podrazd_id, debet_id, debet_partner_id, debet_analitika_id) as b
on a.podrazd_id = b.podrazd_id
and a.subcount_id = b.debet_id
and a.partner_id = b.debet_partner_id
and a.analitika_id = b.debet_analitika_id
when matched then update set summa_debet = summa_debet - b.summa;
эквивалентно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
update DB2ADMIN.saldo a
set summa_debet=summa_debet-
(
select sum(summa)
from old b
where 
    a.podrazd_id = b.podrazd_id
and a.subcount_id = b.debet_id
and a.partner_id = b.debet_partner_id
and a.analitika_id = b.debet_analitika_id
)
where exists 
(
select sum(summa)
from old b
where 
    a.podrazd_id = b.podrazd_id
and a.subcount_id = b.debet_id
and a.partner_id = b.debet_partner_id
and a.analitika_id = b.debet_analitika_id
);
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34375167
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Mark:

Вот этот "страшный" SQL будет работать быстрее merge? У Вас был подобный опыт?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34376660
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Этот триггер один использует действие update... Есть другие, которые добавляют записи, если их нет....
2. А как следует делать, если при изменении таблицы нужно изменять несколько таблиц? Лучше все в один триггер или в несколько?
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34376731
Mark Barinstein
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TORTВот этот "страшный" SQL будет работать быстрее merge? У Вас был подобный опыт?Не надо думать, что если SQL "страшный", то он хуже работает чем "не страшный".
Merge, как правило, хуже оптимизируется, чем update, если merge фактически использутся только для update.
TORT1. Этот триггер один использует действие update... Есть другие, которые добавляют записи, если их нет....
2. А как следует делать, если при изменении таблицы нужно изменять несколько таблиц? Лучше все в один триггер или в несколько?1. Update - самая сложная операция. Вы ее уже оптимизировали?
2. Как удобнее, так и делайте.
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34376768
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Страшный" в смысле необычный для меня... Я exists ни разу в жизни не использовал... Пытаюсь перевести триггеры на FOR EACH ROW... Тестирую чего получается...
...
Рейтинг: 0 / 0
Триггеры... Поделитесь опытом
    #34376834
TORT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Mark

Я как-то всегда делал

update DB2ADMIN.saldo a
set summa_debet=summa_debet-
(
select sum(summa)
from old b
where
a.podrazd_id = b.podrazd_id
and a.subcount_id = b.debet_id
and a.partner_id = b.debet_partner_id
and a.analitika_id = b.debet_analitika_id
)
where (a.podrazd_id, a.subcount_id, a.partner_id, a.analitika_id)
in (select b.podrazd_id, b.debet_id, b.debet_partner_id, b.debet_analitika_id
from old b);

И explain'у это гораздо больше нравится
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Триггеры... Поделитесь опытом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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