Jump to content

MsSQlServer 2005 Trigger funzt nicht keine Errormessage


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo,

 

wer kann hier weiterhelfen,

Der trigger funzt nicht, es gibt keine Fehlermeldung, es passiert einfach nichts. Ich öffne Table_1 ändere das Gewicht und dieser neue wert sollte dann in TableOrg erscheinen, macht er aber nicht.

 

Ich habe in derselben DB, zwei weitere Tabellen ziwchen dnene auch ein trigger gesetzt ist. Dieser hat denselben Aufbau, dieselbe Anzahl von variabln, Spalten,Datentyp, hier funzt der Trigger. Der einzige Unterschied ist, diese beiden Tabellen waren schon in der Datenbank. Die beiden bei denen es nicht klappt, habe ich heute selbst angelegt.

 

So sieht der Code aus:

 

Create Trigger [dbo].[TriggTest ] ON [dbo].[Table_1]

for insert, update as

Begin

DECLARE @InsertetPK Int

DECLARE @DeletePK Int

 

DECLARE @InsertetGW1 SmallInt

DECLARE @DeleteGW1 SmallInt

 

SELECT @InsertetPK = inserted.IDNr from inserted

SELECT @DeletePK = deleted.IDNr from deleted

 

SELECT @InsertetGW1 = inserted.GW1 from inserted

SELECT @DeleteGW1 = deleted.GW1 from deleted

UPDATE TableOrg SET Gewicht=@InsertetGW1

WHERE @InsertetPK = IDNr And @DeleteGW1=Gewicht

End

Link zu diesem Kommentar

Danke für den Tipp das Leerzeichen soll da nicht sein, hab eben nachgesehen und es weggemacht(mit wurde der sting aber auch sauber ausgeführt)

Aber, es bleibt dabei, kein error, es tut sich einfach nichts

 

Ich hab alles was SQL Server im Namen hat nochmal deistalliert, dann den 2005 wieder neu und das SP2 hinterher, habe nicht viel davon erhofft, aber wie es manchmal so ist. Es bleibt aber dabei, der Tigger macht nichts

 

Noch ein Hinweis zum doppel von gestern, das war kein absicht, es sah für einen moment so aus, als wäre nichts abgesendet

bearbeitet von ingoeff
Hinweis zu doppelposting
Link zu diesem Kommentar

Vielleicht lohnt es an der Stelle weiter zu gehen. Geh ich auf 'Eigenschaften' der Tabellen, dann 'Berechtigungen' gibt es keine 'expliziten' Berechtigungen, alle haben dort nur den Eintrag für Schema:dbo.

Dbo ist mitglied der Rolle db_owner, sollte doch OK sein, oder ?

Soweit ich sehen kann mit meinem besch wissen überdiese dinge, haben alle Tabellen in dieser Db dieselben Rechte.

Hab ich hier vielleicht was übersehen?

Link zu diesem Kommentar

Ich habe das ganze jetzt auf einer Windows7 Maschine versucht, klappt alles. Es ist dieselbe Datenbank(per anfügen) dieselben Tabellen, auch hier msSqlServer 2005 aber alles noch ohne SPs, auf beiden maschinen gibt es nur dei windows-anmeldung, also kein gemischter modus

Wenn doch noch jemand einen tipp hat wie sich der ursache nähern kann, wär ich sehr froh

Link zu diesem Kommentar
  • 4 Wochen später...
  • 3 Wochen später...
  • 3 Wochen später...
  • 3 Wochen später...

Bei logging geht es um das Transaktionsprotokoll, mit dieser Anweisung kann man es deaktivieren

 

ALTER DATAbase [Datenbankname]* SET RECOVERY SIMPLE

 

Wie man es wieder aktiviert, fehlt noch

 

Letztlich hats aber nichts gebracht.

 

Was die Sache vielleicht aufhellt, ich habe eine Winform.Net Applikation. Diese kann Tabellen anlegen und Trigger erzeugen.

Diese Trigger funktionieren auch(Win7, WinVista auch auf WinXp).

Die App meldet sich am Server an, mit demselben Usernamen den ich habe, wenn ich mit dem SQL Server Managment Studio zugreife.

 

Noch etwas, was Licht ins Dunkel bringen könnte. Die beiden manuell angelgten Tabellen, haben je nur eine Zeile.

Wenn die Spalte, die ich ändere, in beiden Tabellen denselben Wert hat,

kommt diese Meldung: "... machen die Zeile nicht eindeutig oder ändern mehrere Zeilen...".

Diese Message ist mir nicht unbekannt, gerade deshalb erwarte ich bei Ungleichheit der Werte,

dass die Änderung Tabelle ankommt. Weil eben -> nur ein Zeile ->PrimaeKey in beiden gleich -> also muss es doch ankommen

Link zu diesem Kommentar
  • 1 Monat später...
Hallo,

...

 

SELECT @InsertetPK = inserted.IDNr from inserted

SELECT @DeletePK = deleted.IDNr from deleted

...

End

 

Der Weg über Variablen ist so leider nicht korrekt (was soll in @DeletePK enthalten sein, wenn 2 Sätze gleichzeitig geändert werden ?). Du musst ggf. die Tabellen

inserted, deleted, TableOrg passend joinen. Dabei solltest Du in einem Trigger immer berücksichtigen, dass

a) kein Satz

b) ein Satz

c) oder mehrere Sätze

 

upgedated werden könnten.

 

z.B.:

 

UPDATE TableOrg

SET Gewicht=inserted.gw1

FROM TableOrg

INNER JOIN inserted

ON TableOrg.IDNr = inserted.IDNr

 

Vorausgesetzt Deine Tabelle die den Trigger enthält und TableOrg enthalten die gleichen Datensätze mit den gleichen IDNrn, so wird der geänderte Wert auch in TableOrg geändert.

 

Gruß Kai

Link zu diesem Kommentar
  • 1 Monat später...

@hh2000

ich konnte das Problem, sagen wir, beheben. Richtig happy bin ich damit noch nicht.

Wenn es um mehrere DS geht hast du recht. Ich glaubte aber Ursache ist das neue Rechtesystem von 2005 im vergl mit 2000, deswegn wollte ich prinzipiell Trigger ans laufen kriegen, die so aussehn wie sie von der angesprochen App erzeugt werden.

 

Ich hatte dort übersehen, der Trigger, der erzeugt wird, ist für zwei Tabellen die je einen Primärkey haben. Ich hatte der Table_1 keinen gegben nur TableOrg hatte einen.

Und die Ursache dafür, dass manchmal nichts passiert, ergab sich natürlich aus dem WHERE Teil . Wenn das gewicht1 ungleich ist dem GewichtOrg, wird auch keine Änderung übertragen.

 

Wenn ich den gesamten UPDATE so schreibe:

UPDATE TableOrg SET Gewicht=@InsertetGW1

WHERE @InsertetPK = IDNr

 

klappts auch hier.

 

Das wahre ist das noch nicht. Wiso klappt das wenn Table_1 auch einen Primärkey hat. Beide Tabell haben je nur einen Datensatz

 

Wo kann ich sehen welche Werte die Variabln haben?

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...