Aktywne Wpisy
owsikalfred +782
Jako że Wykop to ogromna moc, może w takim razie ktoś będzie potrafił udzielić odpowiedzi co się u mnie odpoerdziela w #mieszkaniedeweloperskie mieszkanie odebrane od dewelopera w grudniu 2019. Od samego początku pojawiały się liczne pęknięcia na ścianach nośnych oraz suficie w łazience, co nasiliło się po budowie drugiego etapu osiedla. Jako że generalny wykonawca zaczyna coś kręcić że nie wie jak je usunąć zaczynam zastanawiać się nad wadą trwała w budynku.
JustJoinIT +89
URODZINOWE #rozdajo ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°)
Wiecie, że w niektórych rejonach to solenizant rozdaje prezenty gościom, a nie odwrotnie? Dlatego w dniu naszych 7 urodzin uszanujemy tę tradycję i obsypiemy Was podarkami! Do rozdania mamy 7 retrokonsolek Anbernic RG35xx, abyście i Wy mogli cofnąć się pamięcią do lat młodości.
Co zrobić, aby otrzymać
Wiecie, że w niektórych rejonach to solenizant rozdaje prezenty gościom, a nie odwrotnie? Dlatego w dniu naszych 7 urodzin uszanujemy tę tradycję i obsypiemy Was podarkami! Do rozdania mamy 7 retrokonsolek Anbernic RG35xx, abyście i Wy mogli cofnąć się pamięcią do lat młodości.
Co zrobić, aby otrzymać
Chodzi o sytuację kiedy na bazie jest np. 10 000 rekordów w kilku tabelach i codziennie odpytuje się zewnętrzne api po te dane, jak wychwycić co trzeba będzie zaktualizować, co nowego dodać, co usunąć, a co przywrócić (poprzez soft delete)? Póki co pomysłem jest dodanie hash code i equals na encjach na kolumnach zewnętrzne id + te kolumny które mogą ulec zmianie. Wychwyciło by to zmiany ale czy jest to super wydajne? Wątpię.
#java #bazydanych #hibernate #spring
1. Dane w tabelach nie mogą być kasowane (delete), tylko oznaczane do skasowania. Np. dodać kolumnę o nazwie ISDEL ustawioną na TRUE w momencie gdy aplikacja wiersz kasuja, to oznacza, że rekord został usunięty. Widoki korzystające z tej tabeli muszą jedynie mieć where ISDEL <> TRUE aby miało to sens
2. Dodać kolumnę na tabeli ROWUPDATE typu Date
3. Trigger after insert/update, który aktualizuje kolumnę ROWUPDATE
MERGE
?Jeżeli chcesz trzymać historię zmian, konieczna będzie tabela - repo. Gdzie w tabeli głównej będziesz miał ostatnią "albo masterową" wartość
podaj przykład danych, o
Zbiór banków z dostępami do modułów jakiegoś tam programu:
Bank {
apiId
name
shortName
status
}
BankAccount{
apiId
name
surname
bankId
status
}
AccountModuleAccess{
accountId
moduleName
status
}
Przykład jest nieprawdziwy i te dane które mam mogą się zmieniać codziennie wszystkie, (tak jak tutaj status, imie, nazwisko itp.). I nie mogę tego ograniczyć do jakiejś daty, muszę zawsze odpytywać api o wszystkie dane i
MERGE
? (powtarzam się)pobierasz dane z api do tabeli tymczasowej i potem merge'ujesz ją do tej głównej tabeli, w której przechowujesz dane, usuwasz dane z tymczasowej i jutro od nowa
wpisz w google
merge into source target
i poszukaj jakiegoś przykładu zapytania. merge'm możesz ograć jednocześnieinsert
,update
idelete
robisz coś w stylu:
MERGE docelowa_tabela as target
using ta_nasza_tabela_tymczasowa_z_danymi_z_api as source
ON source.jakas_kolumna = target.jakas_kolumna
and source.jakas_kolumna_o_innej_nazwie = target.jakas_inna_kolumna
--and itd
when matched then
-- kod odpowiedzalny za update
when not matched by target then
-- kod odpowiedzialny za insert
when not matched by source then
-- kod odpowiedzialny za delete
jeśli dodasz jeszcze
OUTPUT
to będziesz