Wpis z mikrobloga

Hej!

W obecnej bazie danych muszę usunąć jedną wartość z tabeli wymiarów (dlaczego? Długa historia ( ͡° ͜ʖ ͡°)). Jednak ten wymiar jest używany w bardzo wielu tabelach, więc najpierw muszę je wyczyścić z wpisów odwołujących się do niego. W każdej tabeli kolumna z kluczem ma tę samą nazwę.

Jest jakieś ogólne query, które mogę zapuścić i wyrzuci mi w jakich tabelach ten konkretny klucz jest używany? Jako parametr podaję wartość (np. 1234) i dostaję listę tabel, w których ona występuje.

RDMS to MS SQL Server 2017

#sql
  • 16
@leszekwl: @makumba88: dzięki za pomysły, ale dependecies to sobie ogarnę, mi chodzi o występowanie konkretnej wartości w danej kolumnie.

Chyba napiszę procedurkę, co mi wywala wszystkie tabele w których jest ta kolumna, a następnie przeszukuje ją pod kątem podanej wartości i wrzuca do #temp nazwę tabeli i na koniec mi ją wypluwa jako listę tabel, gdzie mam ten klucz użyty :)
@koxok: Cel osiągnięty :D

Ogólnie najpierw przy pomocy sp_fkeys wyciagam tabele powiązane przez FK z moją tabelą źródłową. Tylko jako, że to jest procedura wbudowana w MS SQL to muszą ją jakoś zrzucić do tabli, stąd dynamiczny SQL (wiele osób marudzi na niego, ale do "maintenance" jest idealny) pod @dynamicSql

Z tej tabeli potem po kolei (korzystając z IDENTITY i zmiennej) sprawdzam (również z użyciem dynamicznego SQL) wszystkie wyrzucone tabele, czy
@leszekwl: O, jestem świadom istnienia sp_executesql, ale nie wiedziałem, że zapisuje plany wykonania jak normalna procedura i potem ich używa ( ͡ ͜ʖ ͡)

Mimo wszystko akurat tutaj nie widzę wielkiego zysku dla wydajności (jeden SELECT, całość kodu raczej nie będzie często używana), ale na pewno zostawię to sobie w pamięci ()

PS. Tak samo wiem o funkcji, która