Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
Trigger per piacere qualcuno mi aiuti
martedì 05 giugno 2012 - 21.37
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
Windows XP
|
MySQL 5.5
|
Firefox
gigimac
Profilo
| Newbie
6
messaggi | Data Invio:
mar 5 giu 2012 - 21:37
Ciao a tutti sono nuovo di questo forum,mi sonoiscritto su diversi forum prima diquesto ma nessuno mi a saputo aiutare e spero sinceramente che qui le cose siano diverse.
Praticamente devo creare due trigger:
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 sono disperato perchè tra pochi giorni devo consegnare un progetto e mi manca solo questo
Ps. utilizzo MySql versione 5.20
e come interfaccia heidiSql
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
sab 9 giu 2012 - 03:13
>Ciao a tutti sono nuovo di questo forum,mi sonoiscritto su diversi
>forum prima diquesto ma nessuno mi a saputo aiutare e spero sinceramente
>che qui le cose siano diverse.
Ciao gigimac e benvenuto su dotnethell.it
>Praticamente devo creare due trigger:
Perdonami ma il primo non ho capito cosa deve fare. Quando dovrebbe essere scatenato? E cosa dovrebbe succedere? Ma soprattutto.. su che tabella devi applicarlo?
Vuoi controllare l'inserimento di un bene e determinare se la categoria è contenuta in un'altra tabella?
Prova a spiegarmi la situazione reale in dettaglio per favore.
>2 trigger:Verificare che la quantità totale di bene coincida perfettamente con quello dell'offerta
offerta? e dove sta? La tabella proposta è per gli acquisti..
>Vi prego aiutatemi sono disperato perchè tra pochi giorni devo
>consegnare un progetto e mi manca solo questo
>Ps. utilizzo MySql versione 5.20
>e come interfaccia heidiSql
Ti assicuro che per come hai esposto il problema non è per niente facile darti una mano. Mancano troppi elementi. Dovresti postar uno script per creare le tabelle (in SQL standard) giusto per condividere le strutture. Poi spiegare cosa deve succedere in base a quello che vuoi fare (quale comando, insert, update, ecc) e infine cosa vuoi che succeda.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
gigimac
Profilo
| Newbie
6
messaggi | Data Invio:
sab 9 giu 2012 - 10:24
Ciao Alessandro allora incomincio con il primo trigger ...lo script delle tavole sono:
DROP TABLE IF EXISTS 'venditore';
CREATE TABLE IF NOT EXISTS `venditore` (
`P_iva` CHAR(10) NOT NULL,
`RagioneSociale` VARCHAR(30) NOT NULL,
`Categoria1` VARCHAR(50) NOT NULL,
`Categoria2` VARCHAR(30) NULL DEFAULT NULL,
`E_mail` VARCHAR(40) NOT NULL,
`Url` VARCHAR(50) NOT NULL,
`Tel` VARCHAR(20) NOT NULL,
`Cell` VARCHAR(20) NULL DEFAULT NULL,
PRIMARY KEY (`P_iva`)
)
DROP TABLE IF EXISTS 'vende';
CREATE TABLE IF NOT EXISTS `vende` (
`Venditore` VARCHAR(30) NOT NULL,
`Bene` INT(10) NOT NULL,
`DataInserzione` DATE NOT NULL,
PRIMARY KEY (`Venditore`, `Bene`),
INDEX `FK_vende_bene` (`Bene`),
CONSTRAINT `FK_vende_bene` FOREIGN KEY (`Bene`) REFERENCES `bene` (`Id_bene`)ON UPDATE CASCADE ON DELETE CASCADE,
CONSTRAINT `FK_vende_venditore` FOREIGN KEY (`Venditore`) REFERENCES `venditore` (`P_iva`)ON UPDATE CASCADE ON DELETE CASCADE
)
DROP TABLE IF EXISTS 'bene';
CREATE TABLE IF NOT EXISTS `bene` (
`Id_bene` INT(10) NOT NULL AUTO_INCREMENT,
`Descrizione` VARCHAR(100) NOT NULL,
`Scadenza` DATE NOT NULL,
`PrezzoUnitario` DOUBLE NOT NULL,
`QuantitàTot` INT(3) NOT NULL,
`UnitàMisura` VARCHAR(45) NULL DEFAULT NULL,
`Categoria` VARCHAR(40) NOT NULL,
PRIMARY KEY (`Id_bene`)
)
Il trigger deve fare questo: inserisco un venditore,il quale può vendere una o max 2 categorie di bene.
Dopodichè vado nella tabella bene,inserisco un bene ed specifico anche la categoria a cui appartiene il bene ; il trigger in questione deve controllare che la categoria del bene corrisponde ad almeno una categoria del venditore.
Il controllo lo deve fare nella tabella vende,nella quale inserisco la p_iva del venditore,l'id del bene e l'inserzione del bene da parte del venditore e li si deve eseguire il controllo: se la categoria del bene non corrisponde ad almeno una categoria del venditore mi deve fare qualcosa ad esempio segnalarmi un errore e farmi comparire un messaggio
Spero di essere stato più chiaro adesso :) grazie mille attendo tue risp
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
sab 9 giu 2012 - 13:56
>Il trigger deve fare questo: inserisco un venditore,il quale
>può vendere una o max 2 categorie di bene.
Quind, vuoi PRIMA inserire, poi APPENA DOPO scatenare un trigger, corretto?
>Dopodichè vado nella tabella bene,inserisco un bene ed specifico
>anche la categoria a cui appartiene il bene ;
e questo lo deve fare già il trigger? Oppure stiamo parlando di due insert? La prima suddetta e la seconda questa?
Insomma non è chiaro QUANDO e DOVE deve partire il trigger.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
gigimac
Profilo
| Newbie
6
messaggi | Data Invio:
sab 9 giu 2012 - 14:11
Inserisco il venditore ed in particolare il valore per Categoria 1 e se ne ha 2 anche Categoria2
e non attivo nessun trigger .
Dopodiche vado nella tabella bene e inserisco il bene,e non attivo nessun trigger.
Dopo vado nella tabella vende inserisco il venditore il bene e la data dell'inserzione e qui attivo il trigger,
in questa tabella vado a fare il confronto per vedere se la categoria del bene è uguale a quella del venditore
e se non è uguale attivo il trigger avvertendomi che la categoria del venditore non corrispone con quella del bene.
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
mer 13 giu 2012 - 14:06
>Inserisco il venditore ed in particolare il valore per Categoria
>1 e se ne ha 2 anche Categoria2
>e non attivo nessun trigger .
Già qui vedo un problema di normalizzazione. Sarebbe meglio avere una relazione 1:N tra categoria e venditore.
>Dopo vado nella tabella vende inserisco il venditore il bene
>e la data dell'inserzione e qui attivo il trigger,
>in questa tabella vado a fare il confronto per vedere se la categoria
>del bene è uguale a quella del venditore
>e se non è uguale attivo il trigger avvertendomi che la categoria
>del venditore non corrispone con quella del bene.
ok allora vuoi fare rollback dell'inserimento nel caso in cui la categoria non corrisponda a quella del venditore.
Allora, la sintassi per creare un trigger su MySQL è la seguente:
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
a questo punto dovrai controllare se sulla tabella bene esiste la categoria, e l'exists può andare. Con la relazione è una sola query, altrimenti dovrai o farne due, o usare una COALESCE (
http://dev.mysql.com/doc/refman/5.5/en/comparison-operators.html#function_coalesce
) con la quale torni il primo valore NON NULL di una serie di campi (ad esempio categoria 1 e 2).
Se l'exists non torna nulla o se il risultato della coalesce torna null, allora fai ROLLBACK della transazione.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
gigimac
Profilo
| Newbie
6
messaggi | Data Invio:
mer 13 giu 2012 - 14:17
ciao alex finalmente stamattina ci sono riuscito tutto ok adesso stavo riscontrando un problema in una query che non riesco a fare mica me la potresti dare una mano??
la query è la seguente: "Tutte le coppie di acquirenti che hanno comperato un bene dallo stesso venditore e che si sono scambiati almeno un messaggio di posta privata"
Le tavole che penso servano a fare la seguente interrogazione sono:
COMPRA(Acquirente, Bene) entrambi sono chiavi
VENDE(Venditore,Bene,DataInserzione) le chiavi sono Venditore e Bene
MESSAGGIO(Id_messaggio,Oggetto,Testo,Mittente,Timestamp) la chiave è Id_messaggio che è un numero autoincrementato
RICEVE(Acquirente,Messaggio) entrambe sono chiavi
ho provato a fare in diversi modi ma non ci riesco
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 14 giu 2012 - 10:36
>ciao alex finalmente stamattina ci sono riuscito tutto ok adesso
>stavo riscontrando un problema in una query che non riesco a
>fare mica me la potresti dare una mano??
Ciao,
dovresti postare gli script SQL di CREATE TABLE, qualche dato e il risultato che ti aspetti.
Inoltre, per le prossime volte, apri un nuovo post se cambi l'argomento.
grazie
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
gigimac
Profilo
| Newbie
6
messaggi | Data Invio:
gio 14 giu 2012 - 10:45
Ok adesso apro un nuo post cmq ci sono quasi mi serve solo un piccolo aiuto..il post lo chiamo query impossibile ^_^
alx_81
Profilo
| Guru
8.814
messaggi | Data Invio:
gio 14 giu 2012 - 11:46
>Ok adesso apro un nuo post cmq ci sono quasi mi serve solo un
>piccolo aiuto..il post lo chiamo query impossibile ^_^
mi raccomando, indica bene tutti i dati, così è più semplice capire il requisito.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT
http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !