» »

[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'";
Corsair 750D - VI Hero - i5 4670k - Corsair Dominator 32GB - 1080Ti - EVO 500GB
- Sabrent 1TB nVME - Corsair AX860i - Ducky Shine 3 Brown
  • 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
Corsair 750D - VI Hero - i5 4670k - Corsair Dominator 32GB - 1080Ti - EVO 500GB
- Sabrent 1TB nVME - Corsair AX860i - Ducky Shine 3 Brown

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!
Corsair 750D - VI Hero - i5 4670k - Corsair Dominator 32GB - 1080Ti - EVO 500GB
- Sabrent 1TB nVME - Corsair AX860i - Ducky Shine 3 Brown

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?
Corsair 750D - VI Hero - i5 4670k - Corsair Dominator 32GB - 1080Ti - EVO 500GB
- Sabrent 1TB nVME - Corsair AX860i - Ducky Shine 3 Brown

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
111687 (1012) hurlimannxt
»

[android] vstavljanje slike

Oddelek: Programiranje
71135 (1032) messi
»

C# Pomoč

Oddelek: Programiranje
131303 (1128) jizzer
»

Dvd Podnapisi

Oddelek: Zvok in slika
212985 (2566) Lime
»

debian linux

Oddelek: Operacijski sistemi
7979 (859) DMouse

Več podobnih tem