» »

[C#] brisanje tabele, glede na ključ druge(mssql)

[C#] brisanje tabele, glede na ključ druge(mssql)

nuclear ::

Mislim, da je za ene enostavno, preprosto toliko sem delal zadnji čas z bazami, da se mi je zavrtel in sem odpovedal..

Slika:
 SQL problemček

SQL problemček




Kako naj izbrišem WebAction vrstice glede na WebMainMenuId preko WebMainMenuPostavka? Če izbrišem WebMainMenuPostavka vrstice prej, ne morem izbrisati WebAction vrstic, ker ni več povezave med tema dvema tabelama. WebAction vrstice pa ne morem prej izbrisat, ker je v WebMainMenuPostavka tuji ključ in mi ne dovoli of course.. Torej ima kdo idejo kako bi izbrisal prvo WebMainMenuPostavka vrstice in si shranil IDje od WebActionId in potem še izbrisal WebActionId vrstice glede na ID WebMainMenuId al kako? Ne pridem si gor..

Probal sem takole vendar ofcurse vrže da ne more brisat ker referencira tuji ključ WebActionId v WebMainMenuPostavka.. Groza.

string querya = "DELETE FROM WebAction FROM WebMainMenuPostavka INNER JOIN WebAction ON  WebMainMenuPostavka.WebActionId = WebAction.WebActionId WHERE WebMainMenuId='@WebMainMenuId'";
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB
  • spremenil: nuclear ()

borchi ::

če sem prav razumel imaš možnosti:

- v kodi si zapomneš katere boš brisal, za te postaviš WebMainMenuPostavka.WebActionId na 'null', zbrišeš zapise v WebAction

- začasno umakneš preverjanje ref. int. za določene constrainte (don't!)
l'jga

nuclear ::

v kodi si zapomnem kaj bom brisal.. mogoče kak ideja kak? v seznam al kako.. samo če si shranim 100 IDjev recimo nekam v seznam, maš kak algoritem hitr iz glave kako bi pol te idje metal v DELETE statement pol?

druga možnost itak ne pride v poštev :P

lp in hvala za reply

nuke
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB

commissar ::

če so id-ji v arrayu lahko sestaviš delete takole:

            
string[] ids = { "1", "2", "3", "4" };
string s = String.Join("','", ids);
string deleteSql = "delete from [ime_tabele] where [primary_key] in ('" + s + "')";

Zgodovina sprememb…

borchi ::

> samo če si shranim 100 IDjev recimo nekam v seznam, maš kak algoritem hitr iz glave kako bi pol te idje metal v DELETE statement pol?

for zanka?! :D

lahko pa tudi nafilaš temp tabelo z zapisi, ki jih moraš zbrisat in jo potem pri deletu join-aš, spišeš stored proceduro...
l'jga

nuclear ::

Hvala obema! Bom izprobal!
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB

BlueRunner ::

DELETE FROM WebAction WHERE WebActionId IN (SELECT WebActionId FROM WebMainMenuPostavka WHERE WebMainMenuId = XXXX)

Oziroma, če je filter dejansko na tabeli WebMainMenu...

DELETE FROM WebAction WHERE WebActionId IN (SELECT WebActionId FROM WebMainMenuPostavka WMMP INNER JOIN WebMainMenu WMM ON WMMP.WebMainMenuId = WMM.WebMainMenuId WHERE WMM.Naziv = 'XXXX')

nuclear ::

works like a charm commissar rex! thx obema.

BlueRunner nea dela to, ker moreš prej sprosit idje v WMMP od WebAction table..
Zakaj pa si v drugem queryu primerrjal Naziv?
Asus G14 2023 - Ryzen 7940HS - 32GB DDR5 - GeForce RTX 4080 - 990 PRO 4TB

BlueRunner ::

SELECT WebActionId INTO #idlist FROM WebMainMenuPostavka WHERE WebMainMenuId = XXXX;
DELETE FROM WebMainMenuPostavka WHERE WebMainMenuId = XXXX;
DELETE FROM WebAction WHERE WebActionId IN (SELECT WebActionId FROM #idlist);
DROP TABLE #idlist;
GO


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Android - Začetnik

Oddelek: Programiranje
111775 (1100) hurlimannxt
»

[android] vstavljanje slike

Oddelek: Programiranje
71234 (1131) messi
»

C# Pomoč

Oddelek: Programiranje
131398 (1223) jizzer
»

Dvd Podnapisi

Oddelek: Zvok in slika
213073 (2654) Lime
»

debian linux

Oddelek: Operacijski sistemi
71035 (915) DMouse

Več podobnih tem