Newsgroup: it.comp.software.database
Titolo: Trigger per update di valori

Puň darsi che mi sbaglio, ma sembra che oracle non supporti
proprio dei trigger che agiscano prima della vera scrittura
del record sul db.
detto questo č impossibile intercettare i valori e modificarli
se necessario. Ne cosengue che per aggiornare un campo data e
uno di testo che contiene il valore dell'utente dentro un
record, in modo da sapere chi č stato e quando ha modificato
il record, devo fare un trigger di questo tipo.
Se qualcuno che ha piů esperienza di me potesse dirmi se č
una buona soluzione, ne sarei veramente felice.
CREATE TRIGGER WEBMA.UPD_ANAG_MANDPR
ON GESTP.WEBMA.ANAG_MANDPR
FOR UPDATE
AS
 DECLARE @ID UNIQUEIDENTIFIER
BEGIN
 SET NOCOUNT ON
 SELECT @ID = ANM_ID FROM INSERTED
 UPDATE ANAG_MANDPR
 SET    ANM_WHOUPDATE = USER_NAME(),
        ANM_DTUPDATE = GETDATE()
 WHERE  ANM_ID = @ID
 SET NOCOUNT OFF
END
--
Saluti
Andrea MORO
***************************************
Per rispondere togliere ET dal messaggio prima
della chiocciola.

 Se qualcuno che ha più esperienza di me potesse dirmi se è


Il problema è che il cliente non ha sql 2000 ma sql 7.
il che significa che per cose dove la microsoft ha trovato
lacune nel suo prodotto e le ha aggiunte nella nuova versione,
per riprodurle nel vecchio vuol dire trovare modi e sistemi
strambi e magari poco performanti
--
Saluti
Andrea MORO
***************************************
Per rispondere togliere ET dal messaggio prima
della chiocciola.
"Paulus" <xx...@xxx.xx> ha scritto nel messaggio
news:ATFM8.25358$K4.6...@twister2.libero.it...


 wrote in message
news:adsvqb$21jpr$1...@ID-61006.news.dfncis.de...


 strambi e magari poco performanti
ma allora pari di sqlsever, non di Oracle!!!
Oracle può creare trigger before.
né sqlserver 7 né il 2000 supportano invece il trigger before.
ciao
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://www.gnu.org/philosophy/free-doc.it.html

ahimè si ... parlo di sql server ...
chiedo venia se non si è capito prima.
Sql 2000 ha il trigger before update ... ma il fatto
è che se lo uso per fare la mia applicazione che la
sto sviluppando su 2000 e poi dopo faccio la
migrazione del cliente che invece la versione 7,
rimango fregato perchè poi non funziona un tubo.
GRrrrrrrrrrrrrrrrrr


 rimango fregato perchè poi non funziona un tubo.
sul serio sql2000 ha i trigger before???
dal manuale:
CREATE TRIGGER trigger_name 
ON { table | view } 
[ WITH ENCRYPTION ] 
{ 
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] } 
        [ WITH APPEND ] 
        [ NOT FOR REPLICATION ] 
        AS 
        [ { IF UPDATE ( column ) 
            [ { AND | OR } UPDATE ( column ) ] 
                [ ...n] 
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask ) 
                { comparison_operator } column_bitmask [ ...n ] 
        } ] 
        sql_statement [ ...n ] 
    } 
} 
che sintassi devo usare??
questa non la sapevo!!!
(mi serve un sacco, tra l'altro!)
ciao
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://ethology.intercult.su.se/freescience/

Non parlo come se fosse la stessa roba ...
anzi mi pareva di essere stato chiaro ... ma non sembra
sto parlando di sql che è una mondezza ... e di oracle
che ha cose che sql server nemmeno si immagina.
Lo script che mi hai dato tu, però non mi serve ... proprio
perchè è di oracle ... e nota dolente ... io devo usare
per questo progetto sql server ... visto che il cliente
ha quello e non certo posso dirgli di spendere 10k per
comprarsi oracle.


Ops ... :)))
Allora mi devo essere confuso con un altro post ...
sai com'č ... ero cosě deluso che volevo tanto
oracle ... che pure quando sto parlando male di
sql server ci penso e lo sostituisco :!!
Comunque si... anche sql - dalla versione 2000 -
ha i trigger before. O meglio ... c'č il trigger instead
of ... che con l'aggiunta della parola insert
fai instead of insert ... quindi gli blocchi l'inserimento
che fa l'utente ... e nel trigger fai il tuo di inserimento.
Almeno se ho frainteso male il significato del trigger
instead of ...
Non posso permettermi il lusso di provarlo, innamorarmi
della soluzione per poi non poterla usare visto che
devo rendere i trigger sql server 7.0 compliant.


 devo rendere i trigger sql server 7.0 compliant.
che sappia io, l'instead of serve per effettuare inserimenti e 
cancellazioni 'virtuali' sulle viste, spalmandosi poi su tabelle vere.
quello che mi chiedevo:
se io faccio instead of insert, quando nel trigger provo a farci l'insert, 
si richiama da solo!!
non va in loop?
si accorge di essere se stesso e allora si permette di inserire la riga 
nuova?
allora è ben diverso dal tipo di trigger che conosco (che può esere anche 
ricorsivo, parlando ad esempio di eliminazione di rami di un albero...)
se non hai provato, dovrà farlo qualcuno (se non sono sicuro che vada non 
mi posso permettere di installare sql2000 su una macchina in ufficio, o 
magari me lo permetto lo stesso...)
o magari Gianluca ce lo sa dire subito...
ciao, grazie
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://www.gnu.org/philosophy/no-word-attachments.it.html

Francamente non ho provato ... e non perchè non voglia
farlo - sempre considerando l'enorme quantità di lavoro
che devo fare con il tempo ristretto che mi trovo - ma
anche perchè visto che è poco che uso siqualzoz server
rischierei davvero di interpretare male e di fare cazzano
arrivando alla conclusizone che non funziona, quando
magari una virgola messa al posto sbagliato compromette
tutto.
Magari in futuro ;!


 ha scritto nel messaggio
news:ae4q7b$3ve9c$1...@ID-61006.news.dfncis.de...


 dati sulla tabella che a te interessa...
a questo punto, per creare una tabella vera, usi proprio l'instead of su 
una vista e ti risolvi il problema.
ma si tratta sempre di un work-around all'impossibilità di un trigger 
before su una tabella fisica...
grazie, ciao
-- 
Punkarruso
mail:punkarruso(at)geniotradottoininglese(dot)it
pubblicità progresso:
http://www.nist.gov/dads/