Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 14-09-2005, 13.14.10   #1
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
[ORACLE] Insert automatico in oracle.

Salve, vorrei conoscere il modo per inserire automaticamente un record in una tabella di oracle ogni volta che viene inserito un record in un'altra tabella.
Mi pare che la cosa abbia a che fare con i triggers che permettono la gestione degli eventi e automazioni simili, ma non ne ho mai creato uno e spero possiate aiutarmi.
Grazie in anticipo!

Ultima modifica di Fast-M : 13-10-2005 alle ore 14.34.43
Fast-M non  collegato   Rispondi citando
Vecchio 14-09-2005, 15.55.15   #2
Xtefano
Senior Member
 
L'avatar di Xtefano
 
Registrato: 03-09-2002
Loc.: Osimo (AN)
Messaggi: 489
Xtefano promette bene
Esatto, ti serve un trigger.

Per monitorare gli insert sulla TAB_A es inserire righe in TAB_B puoi usare
Quota:
CREATE OR REPLACE TRIGGER NOMEDELTRIGGER
AFTER INSERT
ON TAB_A
FOR EACH ROW
WHERE (condizione)
DECLARE
......
BEGIN
.....
EXCEPTION
when .....
END;
/
In questo modo le istruzioni vengono attivate DOPO una insert in TAB_A. Nel corpo del trigger hai anche a disposizione i contenuti delle colonne della riga inserita nel formato :NEW.NomeColonna (se fosse stata una update avresti anche i corrispondenti :OLD....).

Per maggiori informazioni vedi CREATE TRIGGER nel manuale Sql Reference


HTH


Byez

Stefano
___________________________________

Le persone pi felici, non necessariamente hanno il meglio di ogni cosa; soltanto traggono il meglio da ogni cosa che capita sul loro cammino.
Paulo Coelho (special thanks to Kyra)
Xtefano non  collegato   Rispondi citando
Vecchio 15-09-2005, 13.41.52   #3
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
Grazie davvero!
Fast-M non  collegato   Rispondi citando
Vecchio 15-09-2005, 15.12.22   #4
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
Comunque non mi chiaro quel FOR EACH almeno per il mio caso in cui devo semplicemente fare in modo che dopo l'insert sulla tabella A venga propagata la chiave di A campo1 all'interno della tabella B.
Quindi credo di non avere bisogno di iterare la cosa su pi righe, ma solo sulla riga che stata immessa in un preciso momento e che fa scattare il trigger impostato.
Fast-M non  collegato   Rispondi citando
Vecchio 15-09-2005, 15.29.24   #5
Xtefano
Senior Member
 
L'avatar di Xtefano
 
Registrato: 03-09-2002
Loc.: Osimo (AN)
Messaggi: 489
Xtefano promette bene
Da Oracle Sql Reference, "CREATE TRIGGER"

Specify FOR EACH ROW to designate the trigger as a row trigger. Oracle fires a row trigger once for each row that is affected by the triggering statement and meets the optional trigger constraint defined in the WHEN condition.

Note: This clause is applies only to DML events, not to DDL or database events.

Except for INSTEAD OF triggers, if you omit this clause, the trigger is a statement trigger. Oracle fires a statement trigger only once when the triggering statement is issued if the optional trigger constraint is met.


Se fai INSERT INTO TAB_A VALUES ..... ad ogni statement corrisponde una INSERT, mentre se fai INSERT INTO TAB_A SELECT .... FROM TAB_B WHERE .... lo statement uno solo, ma non puoi sapere quante righe vengono inserite....
La differenza sostanziale, dipende da quello che ti serve ....


Vale ancora il consiglio di andare direttamente a leggere il manuale.


HTH


Byez

Stefano
___________________________________

Le persone pi felici, non necessariamente hanno il meglio di ogni cosa; soltanto traggono il meglio da ogni cosa che capita sul loro cammino.
Paulo Coelho (special thanks to Kyra)
Xtefano non  collegato   Rispondi citando
Vecchio 30-09-2005, 02.58.08   #6
Fast-M
Senior Member
 
Registrato: 02-08-2003
Loc.: Lamezia Terme
Messaggi: 344
Fast-M promette bene
Perfetto!

Ci siamo!
Ho risolto ed ho imparato a creare un trigger per propagare un valore in altre tabelle ed anche a creare le sequence per effettuare gli incrementi automatici di un campo che uso per contatore e la sequence deve essere sempre incrementata da un trigger.
Fast-M non  collegato   Rispondi citando
Vecchio 06-10-2005, 00.51.32   #7
Sergio Neddi
Gold Member
Top Poster
 
L'avatar di Sergio Neddi
 
Registrato: 07-04-2000
Loc.: Padova-Vicenza
Messaggi: 4.814
Sergio Neddi promette bene
Per cortesia, vedi di mettere il tag al titolo del thread, come da istruzioni qui: http://www.wintricks.it/forum/showth...threadid=90815
___________________________________

Con il PC risolvo molti problemi che prima non avevo. - Coltiva Linux che Windows si pianta da solo!
Sergio Neddi non  collegato   Rispondi citando
Vecchio 14-06-2008, 18.10.45   #8
legolas86
Newbie
 
Registrato: 14-06-2008
Messaggi: 2
legolas86 promette bene
salve ragazzi, ho un problema, in oracle tengo una tabella dove ho un attributo costo, percentuale_sconto e costo_scontato, la mia intenzione che quando inserisco il costo e lo sconto, voglio calcolare il prezzo scontato automaticamente, quindi tramite trigger, ho provato a scrivere questo codice ma non mi viene, potete darmi una mano ?
il codice questo :

create trigger SCONTO
before insert on TABELLA
for each row
begin
costo_scontato=costo*(percentuale_sconto/100);
end;

ps. la prima volta che scrivo un trigger
legolas86 non  collegato   Rispondi citando
Vecchio 16-06-2008, 11.42.11   #9
Xtefano
Senior Member
 
L'avatar di Xtefano
 
Registrato: 03-09-2002
Loc.: Osimo (AN)
Messaggi: 489
Xtefano promette bene
a) dai una bella letta alla documentazione

b) se il trigger lo fai BEFORE INSERT come pensi di avere gi i valori a disposizione nel trigger ?? Nella spiegazione del funzionamento dei trigger c' un chiarissimo schema... (e non mi dire " in inglese" ... non sopporto chi programma, specie usando certi strumenti, e si pone certi limiti...)


BTW: come ho scritto all'epoca dovresti anche usare :NEW (o, se del caso, :OLD) per identificare i valori delle colonne coinvolte...


HTH


Byez

Stefano
___________________________________

Le persone pi felici, non necessariamente hanno il meglio di ogni cosa; soltanto traggono il meglio da ogni cosa che capita sul loro cammino.
Paulo Coelho (special thanks to Kyra)
Xtefano non  collegato   Rispondi citando
Vecchio 24-06-2008, 21.05.53   #10
legolas86
Newbie
 
Registrato: 14-06-2008
Messaggi: 2
legolas86 promette bene
mi servirebbe il modo di inserire un attributo in una specifica tupla da trigger sapete come fare ?
legolas86 non  collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
Il codice HTML OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[ORACLE] Quali grant minimi in Oracle? Fast-M Programmazione 1 06-10-2005 00.50.34
[2000] Cartella avvio automatico parcot Windows 9x/Me/NT4/2000 6 29-09-2005 19.09.34
Manuale o automatico? infinitopiuuno Auto Moto HiFi 25 07-05-2005 15.24.58
[DB Postgres] Errore chiave esterna GiulioCesare Programmazione 0 29-10-2004 19.05.51
Access connessione oracle Fast-M Office suite 14 20-10-2004 02.15.43

Orario GMT +2. Ora sono le: 20.47.23.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright Jelsoft Enterprises Limited.