/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
Trigger mysql
Fra : Preben


Dato : 15-08-06 10:02

Hej

Jeg ville gerne lave noget lign:

-----------
sql = "SELECT image FROM items WHERE product = id"

foreach item
sql = "DELETE FROM images WHERE id = image"

sql = "DELETE FROM products WHERE id = id"
-----------


når man kalder
-----------
DELETE FROM products WHERE something...
-----------

tror nok det bliver en trigger jeg skal bruge!

Er det korrekt og er der nogen der kan hjælpe mig med at få det skrevet.


Mvh / Preben

 
 
Peter Brodersen (15-08-2006)
Kommentar
Fra : Peter Brodersen


Dato : 15-08-06 16:21

On Tue, 15 Aug 2006 11:01:48 +0200, Preben <64bitNONOSPAMno@mailme.dk>
wrote:

>tror nok det bliver en trigger jeg skal bruge!

Jeg har lavet et simpelt Trigger-eksempel i bunden af
http://stock.ter.dk/mysql410.txt , som gør noget af det samme, du også
vil udføre (en fattigmands-løsning for at fjerne orphans i en
reference-tabel).

Jeg vil tro, du i dit tilfælde kan klare dig med:

CREATE TRIGGER imagecleanup BEFORE DELETE ON products
FOR EACH ROW DELETE FROM images WHERE images.id = OLD.image
;

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med valgfri tekst: www.findvej.dk/Nybrogade2,1203?text=Kulturministeriet

Martin (15-08-2006)
Kommentar
Fra : Martin


Dato : 15-08-06 22:16

Peter Brodersen wrote:
> http://stock.ter.dk/mysql410.txt

Lidt offtopic i forhold til spørgsmålet.
Men ellers en rigtig dejlig sag du har fået skrevet dig der, er der også
en til MySQL 5?

Dog må jeg lige bemærke at denne fatter jeg ikke.

Eksempel 2.1: Vi skal nu finde fem tilfældige vindere til vores fest.
Medarbejdere må også gerne deltage:

mysql> (SELECT navn FROM kunder WHERE status = 'VIP')
UNION ALL
(SELECT navn FROM ansatte WHERE jobtype = 'leder')
ORDER BY RAND()
LIMIT 5;

Hvor bliver medarbejderne hentet henne?
Så vidt jeg kan se, så er det stadig kun VIP og leder der bliver taget ud?

og det samme i 2.2

Eksempel 2.2: Vi skal i stedet finde 4 vindere blandt kunderne, og 1 vinder
blandt medarbejderne:

mysql> (SELECT navn FROM kunder WHERE status = 'VIP' ORDER BY RAND()
LIMIT 4)
UNION ALL
(SELECT navn FROM ansatte WHERE jobtype = 'leder' ORDER BY RAND()
LIMIT 1)

VIP - er det kunder og leder er det medarbejder? - Hvis ja, så ville jeg
nok navngive dem anderledes

Peter Brodersen (15-08-2006)
Kommentar
Fra : Peter Brodersen


Dato : 15-08-06 22:40

On Tue, 15 Aug 2006 23:16:21 +0200, Martin <news@natten-i.dk> wrote:

>Peter Brodersen wrote:
>> http://stock.ter.dk/mysql410.txt
>
>Lidt offtopic i forhold til spørgsmålet.
>Men ellers en rigtig dejlig sag du har fået skrevet dig der, er der også
>en til MySQL 5?

Det er lidt et miskmask af hints til MySQL 4.0, 4.1 og 5.0, omend de
eneste 5.0-eksempler/hints er opgradering og så trigger-eksemplet. En
dag hælder jeg forhåbentligt mere på eller udvider med yderligere
eksempler.

>mysql> (SELECT navn FROM kunder WHERE status = 'VIP')
> UNION ALL
> (SELECT navn FROM ansatte WHERE jobtype = 'leder')
> ORDER BY RAND()
> LIMIT 5;
>
>Hvor bliver medarbejderne hentet henne?

Fra tabellen "ansatte". Men vi hiver kun ledere ud blandt de ansatte.

>Så vidt jeg kan se, så er det stadig kun VIP og leder der bliver taget ud?

Jeg betragter en leder som en ansat medarbejder. Det kan være, jeg
omskriver eksemplet til fx at rumme 'projektleder' i stedet for bare
'leder' - det gør det måske tydeligere.

>Eksempel 2.2: Vi skal i stedet finde 4 vindere blandt kunderne, og 1 vinder
>blandt medarbejderne:
>
>mysql> (SELECT navn FROM kunder WHERE status = 'VIP' ORDER BY RAND()
>LIMIT 4)
> UNION ALL
> (SELECT navn FROM ansatte WHERE jobtype = 'leder' ORDER BY RAND()
>LIMIT 1)
>
>VIP - er det kunder og leder er det medarbejder? - Hvis ja, så ville jeg
>nok navngive dem anderledes

Vi finder fire vindere blandt vores VIP-kunder, og en vinder blandt de
ansatte ledere. Det skulle jo nødigt gå sådan at ligegyldige kunder
eller medarbejdere løber med præmierne

--
- Peter Brodersen
Ugens^WMånedens^WSommerens værktøj - Find vej: www.findvej.dk
Nu med valgfri tekst: www.findvej.dk/Nybrogade2,1203?text=Kulturministeriet

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste