INSTEAD OF-Trigger

master-sp

Benutzer
Beiträge
22
Hallo,
ich habe aus einer Datenbankvorlage ein Script exportiert inklusive der Insert, Delete und Update Trigger.

Nach dem Import sind die Trigger nicht in den Tabellen sichtbar!?

Wenn ich nun versuche die Trigger neu einzufügen bekomme ich die Rückmeldung das der Trigger schon existend ist.

Wo werden die Trigger denn dann noch abgelegt ??

Gruß Matthias
 
Werbung:
Nutzt du das (Microsoft) SQL Management Studio? Du musst die Baumansicht ggf. aktualisieren, nach dem du den Code zum Erstellen der Trigger ausgeführt hast.
 
Das Anlegen im Script sieht z.B. folgendermaßen aus.

CREATE TRIGGER [dbo].[INSERTTrigger_Matratzentyp]
ON [dbo].[Matratzentyp]
INSTEAD OF INSERT, UPDATE
AS
BEGIN
 
OK, Sorry ich konkretisiere es etwas.

Im Management Studio habe ich eie Datenbank mit Tabellen angelegt. Diese haben Trigger für die weitere Verarbeitung der Daten.

Im Anschluß habe ich die Datenbank über "Skripts generieren" ausgegeben, mit Triggern und den Testdaten.

Auf einem neuen PC mit Developer Datenbank habe ich die Datenbank angelegt und das Sicherungsskript "ohne Fehlermeldungen" ablaufen lassen.

Die Tabellen und die Daten sind sichtbar und aufrufbar ...

Wenn ich die Tabelle in der Ansicht expandiere (nachdem ich die Anzeige aufgefrischt habe), werden die Trigger nicht angezeigt !?

Wenn ich einen Datensatz lösche verhindert der DELETE Trigger das löschen, wie gewünscht. NUR, er ist in der Anzeige im Studio nicht zu sehen ... ???

Gruß MaW
 
Ich würde da immer noch ein Layer-8-Problem vermuten.

Die "Datenbanksicherung" per Script ist ja komplett lesbarer Code. Der Trigger müsste also dort zu finden sein.

Der Code muss natürlich in die richtige DB eingespielt werden, eventuell steht zwischendurch ein USE und dort wird eine andere DB gewählt, denkbar.

In der Baumstruktur vom Management-Studio gibt es unterhalb der Tabelle den Ordner Trigger wo alle Objekte angezeigt werden. Hier nochmal gezielt Rechtsklick und Refresh drauf machen.

Ansonsten mal alle Trigger aus den Systemtabellen abrufen:

Arbeitest du als SA im Management-Studio oder hast du eingeschränkte Rechte mit dem Benutzer?
 
Vielen Dank ... alle 15 Trigger in der Liste "sys.triggers" aufgeführt.

1646749422069.png

Die Fehlermeldung .. "da bereits ein INSTEAD OF DELETE-Trigger für dieses Objekt vorhanden ist" ist also korrekt !

Nur die Anzeige .... bin als "sa" eingeloggt!

1646749361485.png

Gruß MaW
 
Kurios. Welche Version hat die SQL DB und welche das Management Studio? Kannst du das SSMS mal aktualiisieren?
 
Das ist gerade alles frisch installiert in den aktuellen Versionen die zum Download zur Verfügung stehen !

Kurios ist, ich habe ein BackUp davon gemacht und in eine VM eingespielt. Das BackUp verhält sich identisch, keine Trigger in der SSMS Oberfläche ...
 
Bei den Tabellen die keine Trigger enthalten kann ich diese Trigger anlegen und auch wieder löschen. Natürlich werden diese dann auch angezeigt !
 
OK, ich bin ja am Anfang vom Projekt ... ich kann die ganze Datenbank auch wieder löschen, die Trigger aus dem Skript entfernen und anschließend die 15 Trigger von Hand einfügen. Ich habe diesen Effekt nur noch nie gesehen.

Die Musterdatenbank könnte ich anschließend über ein BackUP wieder in anderen Systemen einspielen. Das Skript war eine Übergangslösung für das erste Projekt.

Besten Dank für eure Anregungen ...

Gruß MaW
 
Werbung:
Tatsächlich hatte ich das Problem auch noch nicht und hätte nicht mal für möglich gehalten das man einen Trigger in der Übersicht vom SSMS quasi "verstecken" kann.
 
Zurück
Oben