SQL "Insert Into [Valami] Select [satöbbi]" rejtély - mizéria - bug - wtf

 ( NewC | 2018. szeptember 21., péntek - 9:03 )

A minap egy egész érdekes jelenséggel találkoztam.

Adva vagyon egy adatbázis, aminek van három táblája. Ezek pedig: "Most", "Korábban" és különbség az "Most" és "Korábban" állapotok között, azaz "Difi".
Kezdetben vala (értelemszerűen) a Difi és Korábban tábla üres. A Most tábla pedig adatokat tartalmaz. A "Difi" táblába egy beszúró lekérdezés pakolja bele az eltéréseket (Minden mező nvarchar(50)). A lekérdezés futtatása után meg az üres értéket úgy értelmezi, hogy őneki most be kell szúrnia az aktuális dátumot...

A lekérdezés előtt a Most tábla állapota:

Most:
TermékID - Terméknév - Megjegyés
00001 - Alma -

Difi:
TermékID - Terméknév - Megjegyzés - Terméknév_PREV - Megjegyzés_PREV

Majd a lekérdezés után a Difi tábla:

TermékID - Terméknév - Megjegyzés - Terméknév_PREV - Megjegyzés_PREV
00001 - Alma - [Curr_date]

Mi a búbánatos megijesztett rutyuraptor van itt?

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Sokat segítene ha láthatnánk a lekérdezéseket.
--
"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Én csak azt nem értem, hogy minek materializálni a difit, amikor az mindig előállítható a jelenlegi és a múltbéli bejegyzések alapján? Na nem mintha teljesen érthető lenne amit leírtál, úgyhogy csak szabadon asszociálgatok.

+1

----------------------------
Az emberiség valaha volt legnagyobb tévedése a dízel személyautó...

Mondasz valamit! Lehet így kellene ezt megközelíteni.
Amúgy egy cikktörzskezelő legacy rendszerről van szó, sokszor én sem értem, hogy adott dolgokat miért úgy oldottak meg mint ahogy...

Több raktárkezelőben is láttam olyan megoldásokat, hogy amit nem tudtak lekérdezésben reprodukálni, azt letárolták, így simán létrejöhetett ez a szerkezet is, a másik, hogy lehetett erőforrás szűkében egyfajta cache-elés a fejlesztő részéről.

Vagy utólag hozzáheggesztett dolog, ami miatt nem akart hozzányúlni a meglévő táblákhoz regressziót kockáztatva.

https://stackoverflow.com/questions/14604191/fire-triggers-on-select


Amit nem lehet megirni assemblyben, azt nem lehet megirni.