SQL DELETE query

poruka: 13
|
čitano: 2.383
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
SQL DELETE query

 

Ima problem sa brisanjem record-a u dvije tablice. Želim napraviti da mi program obriše podatke o npr. knjigama u tablici  KNJIGE i tablici POSUDBA...

 

uspio sam to napraviti kroz dva upita bazi...

 

DELETE FROM posudba WHERE idKnjige=@idKnjige ; DELETE FROM knjige where idKnjige=@idKnjige

 

ali želim to riješiti ovako, nažalost dobijem grešku 

 

 

 

 

DELETE a.*, b.* 

FROM messages a 

LEFT JOIN usersmessages b 

ON b.messageid = a.messageid 

WHERE a.messageid = 1

 

Poruka je uređivana zadnji put uto 10.4.2012 18:16 (brokeman).
 
0 0 hvala 0
17 godina
neaktivan
offline
Re: SQL DELETE query

http://msdn.microsoft.com/en-us/library/ms189835.aspx

 

DELETE ne podržava takvu sintaksu.  Jedna po jedna tablica. Napravi foreign key i ON DELETE CASCADE i to ti je to.

 

14 godina
protjeran
offline
SQL DELETE query
void function(char *str) {char buffer[16];strcpy(buffer,str); } void main() {char large_string[256];int i; for( i = 0; i < 255; i++) large_string[i] = 'A';function(l
 
1 0 hvala 0
15 godina
neaktivan
offline
Re: SQL DELETE query
snor kaže...

http://msdn.microsoft.com/en-us/library/ms189835.aspx

 

DELETE ne podržava takvu sintaksu.  Jedna po jedna tablica. Napravi foreign key i ON DELETE CASCADE i to ti je to.

 

 

zahvaljujem Snor...tako jednostavno riješenje, a ja se patim sa query upitima :)

samo je trebalo u tablici parent postaviti Insert and Update Specification => delete rule - Cascade

17 godina
offline
SQL DELETE query

iako je bolje ne raditi delete!

savjet, koristi neki status pa si prebaci to na "off", a ne delete...

to je pametnije, jer ce ti se jednom dogoditi neka zbrka i nečeš znati zašto

Moj PC  
2 1 hvala 0
16 godina
neaktivan
offline
Re: SQL DELETE query
sasa kaže...

iako je bolje ne raditi delete!

savjet, koristi neki status pa si prebaci to na "off", a ne delete...

to je pametnije, jer ce ti se jednom dogoditi neka zbrka i nečeš znati zašto

 

To ti je neki seminarski rad ? Takve slične zadatke davaju u našim vrlim privatnim školicama .

Private
17 godina
offline
SQL DELETE query

@snor možeš objasniti thumb down?

delete nije dobra akcija nad tablicama.

uvijek je bolje imati dodatni stupac sa nekim statusom (1, 0 ili kakogod želiš označiti statuse) nego raditi delete nad talicama.

Moj PC  
1 0 hvala 0
17 godina
neaktivan
offline
Re: SQL DELETE query
Zašto? Koji su ti argumenti. Da nema smisla, sigurno ju ne bi napravili. Da li ti na svom računalu ikad brišeš stvari koje ti ne trebaju ili ih samo kopiraš u neki folder? Ikad čistiš recycle bin ili samo dodaješ nove diskove?

Jasno je da soft delete preko flagova ima smisla kada postoje takvi zahtjevi, ali naravno da nema smisla u općenitom slučaju. Baza (i/ili tablica, ovisi na kojoj razini gledamo) iz koje se ne bi brisali nepotrebni podaci teoretski može rasti u beskraj. Samim time što imaš više podataka koje teoretski ne trebaš, smanjuješ performanse sustava i lakoću održavanja baze. Djelomično je to moguće riješiti kreiranjem filtered indexa, ali ti to opet povećava količinu zauzetog prostora. Bolje rješenje (sa strane upravljanja takvom bazom) od toga bilo bi obrisane podatke spremati u tablicu sa obrisanim podacima koja se nakon određenog perioda (kada ih se uistinu više ne treba) čisti ili se podaci vraćaju kada je to potrebno. U tom slučaju barem smanjuješ probleme sa performansama. Kada radiš sa bazama od par tranasakcija dnevno i do par gigabajta veličine vjerojatno ti je svejedno. Kod nešto ozbiljnije količine podataka, postane bitno.
16 godina
neaktivan
offline
Re: SQL DELETE query
snor kaže...
Zašto? Koji su ti argumenti. Da nema smisla, sigurno ju ne bi napravili. Da li ti na svom računalu ikad brišeš stvari koje ti ne trebaju ili ih samo kopiraš u neki folder? Ikad čistiš recycle bin ili samo dodaješ nove diskove?

Jasno je da soft delete preko flagova ima smisla kada postoje takvi zahtjevi, ali naravno da nema smisla u općenitom slučaju. Baza (i/ili tablica, ovisi na kojoj razini gledamo) iz koje se ne bi brisali nepotrebni podaci teoretski može rasti u beskraj. Samim time što imaš više podataka koje teoretski ne trebaš, smanjuješ performanse sustava i lakoću održavanja baze. Djelomično je to moguće riješiti kreiranjem filtered indexa, ali ti to opet povećava količinu zauzetog prostora. Bolje rješenje (sa strane upravljanja takvom bazom) od toga bilo bi obrisane podatke spremati u tablicu sa obrisanim podacima koja se nakon određenog perioda (kada ih se uistinu više ne treba) čisti ili se podaci vraćaju kada je to potrebno. U tom slučaju barem smanjuješ probleme sa performansama. Kada radiš sa bazama od par tranasakcija dnevno i do par gigabajta veličine vjerojatno ti je svejedno. Kod nešto ozbiljnije količine podataka, postane bitno.

...e ovo ja lijepo napravim u svojim bazama.

 

Private
17 godina
offline
Re: SQL DELETE query
sasa kaže...

@snor možeš objasniti thumb down?

delete nije dobra akcija nad tablicama.

uvijek je bolje imati dodatni stupac sa nekim statusom (1, 0 ili kakogod želiš označiti statuse) nego raditi delete nad talicama.

 

snor kaže...
Zašto? Koji su ti argumenti. Da nema smisla, sigurno ju ne bi napravili. Da li ti na svom računalu ikad brišeš stvari koje ti ne trebaju ili ih samo kopiraš u neki folder? Ikad čistiš recycle bin ili samo dodaješ nove diskove?

I jedno i drugo je točno. Uvijek je bolje raditi logički "delete" nego fizički (zbog integriteta podataka kao takvih).

Ali i opet kako je snor rekao, potrebno je raditi backup (po nekom određenom kriteriju, starost podataka, upotrebljivost itd) i ostaviti na online sustavu uvijek "optimalnu" količinu podataka, ako je to moguće.

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
16 godina
neaktivan
offline
Re: SQL DELETE query
snor kaže...
Baza (i/ili tablica, ovisi na kojoj razini gledamo) iz koje se ne bi brisali nepotrebni podaci teoretski može rasti u beskraj.

I podatak da je nešto izbrisano je podatak, dakle ili flag da je izbrisano ili još bolje kako si i napisao u posebnu tablicu s informacijom tko je i kada izbrisao. Da ne govorimo da je to u dosta slučajeva zakonska ili obaveza zbog poštivanja standarda koje određene aplikacije moraju poštivati.

17 godina
offline
SQL DELETE query

Ja takodjer izbjegavam "fizicki" delete. Radije flagam da je nesto deleted.

Computer games do not affect kids: I mean if Pacman affected us as kids we'd all be running around in darkened rooms, munching magic pills while listening to repetitive electronic music!
 
2 0 hvala 0
17 godina
odjavljen
offline
SQL DELETE query

Kad imaš hrpetinu korisnika koji su svi na istoj bazi i u frci si konstatno sa vremenom dogodi ti se da te nazove žena pred mirovinu sva uplakana koja je nešto slučajno obrisala. Naravno, dogodit će se da je u podne obrisala slučajno nešto što je unešeno par sati prije (dakle nije dio redovitog backupa). Onda ti sve pada u vodu ako nemaš implementirano "logičko" brisanje kako je i sugerirano. Uostalom, vratiti takve podatke je puno lakše nego restorati nekakav backup pa tražiti sporne recorde koje onda moraš prebacivati u "živu" bazu. Oni koji su se s time susretali znaju kako je to...

Freak Show Inc.
 
3 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice