Forum » Programiranje » [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:
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.
Slika:
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!)
- 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
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…
- spremenil: commissar ()
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?!
lahko pa tudi nafilaš temp tabelo z zapisi, ki jih moraš zbrisat in jo potem pri deletu join-aš, spišeš stored proceduro...
for zanka?!
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')
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?
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
DELETE FROM WebMainMenuPostavka WHERE WebMainMenuId = XXXX;
DELETE FROM WebAction WHERE WebActionId IN (SELECT WebActionId FROM #idlist);
DROP TABLE #idlist;
GO
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Android - ZačetnikOddelek: Programiranje | 1790 (1115) | hurlimannxt |
» | [android] vstavljanje slikeOddelek: Programiranje | 1247 (1144) | messi |
» | C# PomočOddelek: Programiranje | 1410 (1235) | jizzer |
» | Dvd PodnapisiOddelek: Zvok in slika | 3087 (2668) | Lime |
» | debian linuxOddelek: Operacijski sistemi | 1056 (936) | DMouse |