Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 18:51 27.04.24 
Клубове/ Компютри и Интернет / Бази данни Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Re: MSSQL update trigger проблем [re: Blandings Castle]
Автор devnul ()
Публикувано12.10.04 10:28  



Да, прав си за join-овете, просто в случая ставаше въпрос за допускане само на 1 ред в inserted, а тогава няма проблем с производителността.
Но сега осъзнавам, че пропуснах да спомена особено важен аспект от проблема. Ти си прав за join-a, с курсори не ми се е налагало да работя, но разбирам какво имаш предвид. Но точно в този конкретен случай аз все още не виждам как ще стане така. Защото променените полета са от primary key - a.

Ще се опитам да опиша 1 такава проблемна постановка.
2 таблици, схемите са:
A(pk1, pk2, field1, field2...) - pk1 и pk2 са ключ
B(pk1, pk2, pk3, f1, f2, f3...) - pk1, pk2 и pk3 са ключ
Искаме тригер от A към B:
Ако сменим стойността на pk1 в A, то тази нова стойност трябва да се запише и в полето pk1 на B, на мястото на съответстващата стара. Нещо като Cascade Update за Foreign key constraint. Същото и за полето pk2.

Сега да вземем конкретни възможни кортежи:
В таблицата A:
1. (1, 1, 'blabla', 'blabla2', ...)
2. (2, 1, 'blabla', 'blabla2', ...)
3. (1, 2, 'blabla', 'blabla2', ...)
4. (2, 2, 'blabla', 'blabla2', ...)

В таблица B:
1. (1, 1, 1, 'blabla', 'blabla2', ...)
2. (2, 1, 2, 'blabla', 'blabla2', ...)
3. (1, 2, 3, 'blabla', 'blabla2', ...)
4. (2, 2, 4, 'blabla', 'blabla2', ...)

И например имаме следния update:
UPDATE A
SET pk2 = pk2 + 1

Сега искаме промените да отидат на съответното място и в B.
Join на B с inserted? По кои полета? pk1 не ни гарантира връзка с единствен запис от inserted, а pk2 вече имат различни стойности в inserted и B. Може би трябва и е възможно да минем и през deleted, там имаме съответствието на старите редове. Е, да де, стигнах и до най-същественото изречение от първоначалния си пост:
Как да разбера кой ред в inserted на кой ред в deleted съответства?
Аз тук изкуствено си сложих номерация горе. А има ли нещо системно в MSSQL, което да дава съответствието: при update-a на таблицата, този ред (в deleted) беше изтрит и на негово място сега е ето този ред (от inserted)

Забележка: Моят проблем вече е решен, пак заобиколно. Тази дискусия, обаче, все още ме интересува! Заради спорта, пък и за да знам занапред. То и аз ще си търся информация, но ако някой знае нещо, което да хвърли светлина върху проблема... моля, споделете!

P.S. Уф, че било трудно да задаваш въпроси в писмен вид. Простете ми, ако още не го владея този номер! Аз обикновено драскам скици и жестикулирам - много е информативно!

Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...


Цялата тема
ТемаАвторПубликувано
* MSSQL update trigger проблем devnul   11.10.04 17:24
. * Re: MSSQL update trigger проблем Blandings Castle   12.10.04 09:12
. * Re: MSSQL update trigger проблем devnul   12.10.04 10:28
. * Re: MSSQL update trigger проблем Blandings Castle   12.10.04 14:09
. * Re: MSSQL update trigger проблем devnul   13.10.04 09:39
. * Re: MSSQL update trigger проблем Blandings Castle   13.10.04 16:41
. * Re: MSSQL update trigger проблем devnul   14.10.04 09:24
. * Re: MSSQL update trigger проблем wqw   18.01.06 18:31
. * Re: MSSQL update trigger проблем Wolfheart   17.01.06 20:21
. * Re: MSSQL update trigger проблем wqw   18.01.06 18:23
. * Re: MSSQL update trigger проблем Blandings Castle   19.01.06 19:53
. * Re: MSSQL update trigger проблем Wolfheart   19.01.06 20:07
. * Re: MSSQL update trigger проблем wqw   20.01.06 10:06
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.