[ dragisarajic @ 20.06.2005. 10:35 ] @
Imam problem sa brisanjem zapisa iz baze.Radi se o bazi nekretnina.Problem je sledeci:
Zelim da obrisem podatke o nekretnini iz vise tabela.Tabele su: prodavac,opis nekretnine i td.Kada obrisem nekretninu zelim da obrisem i prodavca nekretnine ako je to jedina nekretnina koju prodaje.Unapred zahvalan.Potrebno mi je za diplomski.
[ dragisarajic @ 21.06.2005. 08:26 ] @
Uspeo sam da resim.Ako se neko bude mucio kao ja resenje je Query koji izgleda malo cudno ali radi:

DELETE * /iz koje se brise
FROM tabela1
WHERE TABELA1.idbr NOT IN (select *
FROM tabela2
where tabela1.idbr = tabela2.idbr);


Potrebno je zatim samo na formi napraviti dugme koje ce pokrenuti nekoliko ovakvih upita.Ako neko ima bolje resenje neka napise.Pozdrav svima.
[ Alter Ego @ 22.06.2005. 20:17 ] @
A što to ne odradiš pomoću CASCADE klauzule?
[ dragisarajic @ 23.06.2005. 08:20 ] @

Bih da sam znao-a i dalje ne znam.Kako to ide?
[ Alter Ego @ 24.06.2005. 05:51 ] @
Mislio sam ovako nekako:

Code:

CREATE TABLE nekretnine(

FOREIGN KEY (idProdavca)
REFERENCES prodavci
ON DELETE CASCADE
...
);



Međutim, tek sada sam video da tebi treba brisanje prodavca (a ne nekretnine) samo u slučaju da je to jedina nekretnina koju prodaje (što je malo neobično). Cascade bi obrisao sve “nekretnine” koji referenciraju “prodavca” koji se briše. Dakle to nije to. Ovo bi lepo moglo da se uradi pomoću trigera na nivou rekorda, naravno, kad bi oni postojali u Access-u :) To je prirodno rešenje za ovakav problem. Ovako, ne pada mi na pamet ništa bolje od onoga što si ti napisao.

BTW U prilogu je DSQL triger (za Firebird) koji bi radio ono što želiš.