Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: aiuto trigger mysql

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    97

    aiuto trigger mysql

    Ciao a tutti sono disperato perchè fra 5 giorni devo consegnare il progetto e mi sono rimasti due trigger da fare e non ho proprio idea di come si facciano spero tanto che qualcuno mi possa aiutare.

    1trigger:Il bene venduto deve afferire alla categoria di vendita del corrispondente venditore

    le tabelle che vengono prese in considerazione sono:
    BENE(Id_bene, Descrizione, Scadenza, PrezzoUnitario,QuantitàTot,Categoria)
    la kiave è Id_bene

    VENDE( Venditore,Bene, DataInserzione)
    la kiave è Venditore,Bene

    VENDITORE( P_iva, RagioneSociale,Categoria,E_mail)
    la kiave è P_iva

    N.B Venditore e P_iva sono la stessa cosa e Bene e Id_bene,lo stesso.

    2 trigger:Verificare che la quantità totale di bene coincida perfettamente con quello dell'offerta

    altra tabella che serve a mio avviso per il 2trigger è:
    ACQUISTATO Bene, Transazione, Quantità)
    la kiave è Bene,Transazione

    Per quanto riguarda questo secondo trigger hoscritto qualcosa ma non so come scriverlo sotto forma di triger :
    (NOT EXISTS(SELECT *
    FROM bene B
    WHERE QuantitàTot < (SELECT SUM(Quantità)
    FROM acquistato
    WHERE Bene= B.Id_bene)))


    VI PREGO AIUTATEMI è URGENTE
    GRAZIE A TUTTI

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    97
    POSSSIBILE CHE NESSUNO MI SAPPIA AIUTARE??? VI PREGO è URGENTEEEEE

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Primo trigger:

    codice:
    create or replace trigger before insert on Vende
    for each row
    Begin
    
    declare error_insert_on_vende condition for SQLSTATE '9999';
    declare cat1 varchar(20); --non so bene il tipo dei dati devi modificarli
    declare cat2 varchar(20);
    
    select categoria into cat1
    from venditore
    where venditore = new.venditore;
    
    select Categoria into cat2
    from bene
    where id_bene=new.bene;
    
    if cat1 != cat2 then
    signal error_insert_on_vende set MESSAGE_TEXT='il venditore non può vendere bene appartenenti alla categoria inserita';
    end if;
    per quanto riguarda il secondo avrei bisogno di più info.Saluti.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    97
    Grazie mille per avermi risposto, ho cambiato alcuni dati ma quando inserisco il trigger(da shell lo sto facendo) mi compare un errore adesso te lo posto
    ps. Uso come interfaccia HeidiSQL e la versione di MySQL è 5.5.20
    Immagini allegate Immagini allegate

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    97
    ho aggiunto i delimitatori all'inizio


    delimiter //
    create or replace trigger before insert on Vende
    for each row
    Begin

    declare error_insert_on_vende condition for SQLSTATE '9999';
    declare cat1 varchar(50);
    declare cat2 varchar(50);

    select categoria1 into cat1
    from venditore
    where venditore = new.venditore;

    select Categoria into cat2
    from bene
    where id_bene=new.bene;

    if cat1 != cat2 then
    signal error_insert_on_vende set MESSAGE_TEXT='il venditore non può vendere bene appartenenti alla categoria inserita';
    end if;
    //

    e alla fine e mi compare il seguente errore:
    Immagini allegate Immagini allegate

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Hai ragione ho dimenticato di aggiungere delimiter e il nome del trigger.Per quanto riguarda l'interfaccia non ti posso aiutare.Ritornando al trigger copialo,aggiungendo i delimitatori e il nome,in un file e caricalo.

    create or replace triger NOME_TRIGGER before insert on VENDE........


    P.scome si fa a seguire un thread.la mail non mi arriva.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    97
    P.scome si fa a seguire un thread.la mail non mi arriva.
    Coiè intendi ke quando ti rispondo arriva la notifica??se intendi questo vedi ke alla fine della discussione c'è un link "ricevi aggiornamento"

    Comunque adesso ho aggiunto il nome del trigger e delimiter in questo modo:


    delimiter //
    create or replace trigger prova before insert on vende
    for each row
    Begin

    declare error_insert_on_vende condition for SQLSTATE '9999';
    declare cat1 varchar(50);
    declare cat2 varchar(50);

    select categoria1 into cat1
    from venditore
    where venditore = new.venditore;

    select Categoria into cat2
    from bene
    where id_bene=new.bene;

    if cat1 != cat2 then
    signal error_insert_on_vende set MESSAGE_TEXT='il venditore non può vendere bene appartenenti alla categoria inserita';
    end if;
    //


    ma mi da il seguente errore:
    Immagini allegate Immagini allegate

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Elimina or replace
    create trigger before insert on Vende.......Saluti.

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    97
    Fatto ma mi dail seguente errore


    error 1407 (42000): Bad SQLSTATE: '9999'

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    136
    Prova così:declare exit handler error_insert_on_vende condition for SQLSTATE '45000';

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.