/ 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
Find række ID
Fra : Allan Schuster Bach


Dato : 20-05-03 09:18

Jeg ønsker at oprettet en log over hændelser der sker i min applikation
(klassisk ASP).

Jeg benytter mig at SP i en MS SQL Server

SP er sådan ud
CREATE PROCEDURE [DBO].[sp_OpretBruger]
@segmenter varchar(1000),
@brugerid varchar (50),
@brugernavn varchar(50)
AS

insert into tb_bruger (brugerid, segmenter, brugernavn) values (@brugerid,
@segmenter, @brugernavn)
GO


På tabellen er der oprettet en trigger, som udfør dette
CREATE TRIGGER [SkrivTilLog] ON [dbo].[TB_Bruger]
FOR INSERT, UPDATE
AS

SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]


Men hvordan i alverden få jeg det resultat tilbage, fra triggeren, sp jeg
kan oprettet loggen fra ASP

Allan BAch



 
 
Jens Gyldenkærne Cla~ (20-05-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-05-03 09:46

Allan Schuster Bach skrev:

> På tabellen er der oprettet en trigger, som udfør dette
> CREATE TRIGGER [SkrivTilLog] ON [dbo].[TB_Bruger]
> FOR INSERT, UPDATE
> AS
>
> SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]


Hvad er formålet med en SELECT-sætning i en trigger? Hvor skal den
vises henne?


> Men hvordan i alverden få jeg det resultat tilbage, fra
> triggeren, sp jeg kan oprettet loggen fra ASP

Du kan ikke få noget tilbage fra en trigger. Jeg citerer fra
Professional SQL Server 2000 Programming:

,----
| Beyond not being able to explicitly invoke a trigger, you'll find
| two other things that exist for sprocs but are missing from
| triggers: parameters and return codes
|
| While triggers take no parameters, they do have a mechanism for
| figuring out what records they are supposed to act on (...).
| And, while you can use the RETURN keyword, you cannot return a
| specific return code (since you didn't explicitly call the trigger,
| what would you return a return code to?).
`----

Hvis du vil have noget tilbage kan du lave dine opdateringer i
sp'en. Du kan benytte en output-parameter til at returnere værdien
til asp.
--
Jens Gyldenkærne Clausen

Allan Schuster Bach (20-05-2003)
Kommentar
Fra : Allan Schuster Bach


Dato : 20-05-03 10:25

> Hvad er formålet med en SELECT-sætning i en trigger? Hvor skal den
> vises henne?

Formålet er/var at få fat på det række id, som SP har indsat på.

hele ideen var så, at med det række id, at oprettet en log (som i øjeblikket
bliver gjort fra ASP), som fortæller, hvem der er oprettet, tidspunkt,
rækkenr samt en række andre oplysninger.

Jeg har overvejet at gøre det direkte fra SP, men problemet er så bare, at
jeg ikke kan få en række fejlkoder med, da jeg har en funktioner der
håndtere alle fejl der kan opstå i forbindelsen med kommunikationen til
databasen (on error resume next), efter at data er indsæt.

Allan Bach




Jens Gyldenkærne Cla~ (20-05-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 20-05-03 10:53

Allan Schuster Bach skrev:

>> Hvad er formålet med en SELECT-sætning i en trigger? Hvor
>> skal den vises henne?
>
> Formålet er/var at få fat på det række id, som SP har indsat
> på.

Det kan vel klares med @@IDENTITY ?


> hele ideen var så, at med det række id, at oprettet en log
> (som i øjeblikket bliver gjort fra ASP), som fortæller, hvem
> der er oprettet, tidspunkt, rækkenr samt en række andre
> oplysninger.

Hvis du ikke behøver at få log-oplysningen tilbage til asp med det
samme, kan du formentlig få triggeren til at indsætte
logoplysningerne direkte. En trigger udfører en
handlingsforespørgsel - derfor kan den godt opdatere en log, men
den kan ikke returnere en logværdi.


> Jeg har overvejet at gøre det direkte fra SP, men problemet er
> så bare, at jeg ikke kan få en række fejlkoder med, da jeg har
> en funktioner der håndtere alle fejl der kan opstå i
> forbindelsen med kommunikationen til databasen (on error
> resume next), efter at data er indsæt.

Du kan jo også håndtere fejl i SP'en. De kan enten sendes direkte
tilbage til asp eller du kan håndtere dem i SQL.

NB: Det er en god ide at gøre opmærksom på at man krydsposter. Og
hvis man kun vil have debatten videreført i en enkelt gruppe bør
det gøres med FUT - ikke blot ved at fjerne en eller flere grupper
fra et svar. Se også <http://usenet.dk/ord/lokal.html#fut>
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

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

Månedens bedste
Årets bedste
Sidste års bedste