Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  C# MSSQL andmete kustutamise probleem märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
mauro
Kreisi kasutaja
mauro

liitunud: 24.04.2006



Autoriseeritud ID-kaardiga

sõnum 13.04.2009 02:26:37 C# MSSQL andmete kustutamise probleem vasta tsitaadiga

Probleem siis selline, et saanud veel hakkama sellise situatsiooniga:
Kui esimeses tabelis kustutada ära üks rida. Siis teises tabelis kustutab ära ka kõik read mis onlid esimese tabeli reaga seotud(tabelid on omavahel seotud).

NT kui esimeses tabelis on väljad grupid ja Grupp ning kustutan ära rea mille ID on 2. siis teises tabelis kustutab ära ka väljad mille grupid ( ei ole primary, lihtsalt int. tüüpi väli esimese tabeliga sidumiseks) on võrdne esimese tabeli omaga.

Kood:


int del2 = int.Parse(GroupComboBox.SelectedValue.ToString());

KontaktDataSet.GruppRow Rowdel2 = kontaktDataSet.Grupp.FindByGruppID(del2);

Rowdel2.Delete();

Sellise koodiga hetkel toimub Grupi kustutamine, aga vaja sisi ka teises tabelis ridu kustutada samal ajal.


Ehk on C#-s võimalus otsida (nagu FindByGroupID) ka neid mis ei ole primaryKey?
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
wiinanina
HV kasutaja

liitunud: 27.02.2003




sõnum 13.04.2009 12:42:02 vasta tsitaadiga

Andmebaasist kustutamine pole tavaliselt hea mõte. Märgi parem andmed mittekasutatavaks.
Kui oled siiski otsustanud, et sul on vaja andmebaasist midagi kustutada, ning veel korraga mitmest tabelist, siis kasuta andmebaasi vahendeid.
Trigerid ja protseduurid on MSSQL-s täiesti olemas.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
ref
Kreisi kasutaja

liitunud: 10.08.2003




sõnum 13.04.2009 17:25:04 vasta tsitaadiga

paar soovitust: int.Parse asemel kasuta int.TryParse(String, out int), sellisel juhul on pisuke veakontroll ka ja ei pea ise sellega mässama

samuti nagu ma aru saan on sul mingine väli mis seob teise tabeliga, ehk siis välisvõti (foregin key), sellisel juhul saad kenasti öelda sellele võtmele, et ON DELETE CASCADE, umbes midagi stiilis:

ALTER TABLE [dbo].[tabelinimi}
ADD CONSTRAINT FK_mingi_kena_nimi FOREIGN KEY (v2litabelis)
REFERENCES Tabelinimi (tabeliid ) ON DELETE CASCADE


aga jah, läbi baasiprotseduuride/triggerite oleks see operatsioon veel mõistlikum (vajadusel saad siis ka kustutamisele mingi logimise külge toppida - juhuks kui kiirelt vaja andmeid taastada.... st. backupist taastamine ei ole alati kõige mõistlikum)

Antud juhul püüad andmeloogikat äriloogika osas kirjeldada, ei ole seegi teps mitte hea disainimuster...
Kommentaarid: 17 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 15
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  C# MSSQL andmete kustutamise probleem
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.