MS SQL 2K, 2 Fragen:

1. Frage
Ich habe eine (nicht von mir erstellte) Datenbank, in der verschiedene
Aufgaben mit Triggern erledigt werden.
Nun bestand ein Auftrag, einen Insert-Trigger zu bauen, der eine Bezeichnung
eines Vorgangs zusammenschraubt. Im laufe dieser Aufgabe bin ich auf ein
paar Probleme gestossen:

Der Insert Trigger erf�llte seine Aufgabe nicht. Der Trigger war in etwa so
aufgebaut:

Create Trigger BLABLA....
For INSERT

DECLARE @ActualID
SELECT @ActualID = lid FROM Inserted

Update Tabelle Set Wert = /*Zussamenschraub*/ WHERE lid = @ActualID

Die Ausf�hrende Zeile lief bei Tests ausserhalb des Triggers, und aufgerufen
wurde er auch, da ich versuchsweise @ActualID in eine Testtabelle davor und
noch einmal danach wegschrieb.

F�r die betreffende Tabelle wurde zuvor von anderer Stelle ein Update und
Insert -Trigger eingerichtet, der mehrere Felder untereinander abgleicht:

Etwa 
Update Tabelle Set Wert1 = Wert2
Update Tabelle Set Wert3 = Wert4
Update Tabelle Set Wert5 = Wert6

Welchen ich auch versuchsweise auf reines Update eingestellt habe. Das die
Updates oben anderst formuliert werden sollten (Update Tabelle Set Wert1 =
Wert2 WHERE Update Tabelle Set NOT Wert2 = Wert1) werde ich dem Ersteller
noch mitteilen,

Ich habe den eigentlich f�r Select vorgesehen Teil nun in diesen Trigger
Integriert und nach Update Tabelle Set Wert = /*Zussamenschraub*/ WHERE Wert
IS NULL 
umformuliert, was soweit auch funktioniert.

Nur, wieso konnte ich den Trigger nicht seperat einrichten?

Die 2. Frage ist allgemeinerer Natur, betrifft aber auch dieses Beispiel.
Ich stosse �fter auf das Problem fortlaufender Nummern, bei Imports aus
anderen Tabellen behelfe ich mir mit tempor�ren Tabellen mit einer Identity
Spalte,
In diesem Trigger ist dies jedoch nicht m�glich, da sich die Bezeichnung
folgendermassen zusammensetzt:

MandantID (3 Stellig) + Monat(2 Stellig) + Jahr(2 Stellig) + laufende Nr.
(die sich auf den ersten 7 Stellen bezieht. Also z.B.:

02302041
02302042
02102041
06502041
02102042

Ich berechne den ersten Teil, Z�hle das ganze, addiere zum Ergebnis 1 und
setzte so die neue laufende Nr. ein.
Da ich f�r den Update Trigger das ganze Set-based mache (also mehrere
solcher werte mit einem Update Befehl machen will) z�hlt der allerdings nur
die vor dem Update Befehl vorhandenen und z�hlt sie nich hoch.
Nun kann ich das mit einem Cursor l�sen, was mir aber f�r einen Trigger
eigentlich zuviele Ressourcen Frisst. Kennt jemand eine bessere L�sung?

Gru�, Andreas

_______________________________________________
Database.asp mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/database.asp

Antwort per Email an