Announcement

Collapse
No announcement yet.

SQL Trigger Problem

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Trigger Problem

    Hallo ich brauche eure Hilfe

    Ich habe folgende Situation.

    Bei einem Warenwirtschaftsprogramm sind viele Artikel in einer Tabelle hinterlegt. Für jeden einzelnen Artikel kann man Zubehörartikel hinterlegen, die dann in einer separaten Tabelle angezeigt werden.
    Nun ist folgendes Problem bei beiden Tabellen gibt es ein Datum zu jedem Artikel (BearbeitetAm und GeändertAm) dieses ändert sich wenn man einen Zubehörartikel speichert aber leider nur bei der Zubehörtabelle.

    Ich habe die Vorgabe mittels eines SQL Triggers das Datum von der Artikel Tabelle auf das Datum zu setzen das nach Hinzufügen eines Zubehörartikels in der Zubehörtabelle steht.

    Das Ganze soll bei einem INSERT UPDATE und DELETE in der Zubehörtabelle passieren.

    Ich habe also Tabelle dbo.Art und die Tabelle dbo.Zubehoer
    die Tabelle dbo.Art hat folgende Spalten


    Code:
    ,[Artikelnummer]
    ,[EANNummer]
    ,[Bezeichnung]
    ,[Zusatz]
    ,[Matchcode]
    ,[Artikelgruppe]
    ,[Erfolgskontengruppe]
    ,[Aufwandskontengruppe]
    ,[Mengenstaffel]
    ,[SSEinkauf]
    ,[KontoEinkauf]
    ,[SSVerkauf]
    ,[KontoVerkauf]
    ,[Mengeneinheit]
    ,[Preismengeneinheit]
    ,[Preismengenfaktor]
    ,[Preisverweis]
    ,[Preiseinheit]
    ,[Gewicht]
    ,[Lagerartikel]
    ,[LosgroesseVerkauf]
    ,[Mengenformel]
    ,[Stueckliste]
    ,[StuecklistenExp]
    ,[SerieCharge]
    ,[Variantenartikel]
    ,[MinusWarnung]
    ,[Provisionsfaehig]
    ,[Rabattfaehig]
    ,[Skontofaehig]
    ,[Provisionsgruppe]
    ,[Hersteller]
    ,[HstArtikelnummer]
    ,[Lieferant]
    ,[Dispositionsart]
    ,[AutoBestellung]
    ,[Lagerstrategie]
    ,[Auslaufdatum]
    ,[Bestandsauswahl]
    ,[Inaktiv]
    ,[AngelegtAm]
    ,[AngelegtVon]
    ,[GeaendertAm]
    ,[GeaendertVon]
    ,[FreierText1]
    ,[FreierText2]
    ,[FreieZahl1]
    ,[FreieZahl2]
    ,[FreieZahl3]
    ,[FreieZahl4]
    ,[FreiesDatum1]
    ,[FreiesDatum2]
    ,[FreiesKennzeichen1]
    ,[FreiesKennzeichen2]
    ,[FreiesKennzeichen3]
    ,[FreiesKennzeichen4]
    ,[SSEG]
    ,[SSImport]
    ,[SSExport]
    ,[ShopAktiv]
    ,[Region]
    ,[Ursprungsland]
    ,[Geschaeftsart]
    ,[Warencode]
    ,[StatVersand]
    ,[StatEingang]
    ,[StatWert]
    ,[StatWertEuro]
    ,[Kostenstelle]
    ,[Kostentraeger]
    ,[DNExport]
    ,[Ausschussartikelnummer]
    ,[Produktionslager]
    ,[AusschussBewertung]
    ,[Verfallsfrist]
    ,[TS]
    die Tabelle dbo.Zubehoer hat folgende Spalten

    Code:
    ,[ArtArtikelnummer]
    ,[Pos]
    ,[Artikelnummer]
    ,[Mengenformel]
    ,[Mengeneinheit]
    ,[Preisgruppe]
    ,[Mengenaktualisierung]
    ,[Einfuegemodus]
    ,[Verwendung]
    ,[AngelegtAm]
    ,[AngelegtVon]
    ,[BearbeitetAm]
    ,[BearbeitetVon]
    ,[TS]
    Ich benutze Microsoft SQL Server und meines Wissens arbeitet man hier mit T-SQL

    Ich habe bis jetzt folgendes erstellt:


    Code:
    CREATE TRIGGER test_trigger
    ON [dbo].[ZUBEHOER]
    AFTER INSERT
    AS
    BEGIN
    SET NOCOUNT ON;
    
    DECLARE 
    @BearbeitetAm datetime,
    @ArtArtikelnummer varchar(50)
    
    
    SET @BearbeitetAm = (SELECT BearbeitetAm FROM inserted);
    SET @ArtArtikelnummer = (SELECT ArtArtikelnummer FROM inserted);
    
    
    
    UPDATE [dbo].[ART] 
    
    SET GeaendertAm = @BearbeitetAm
    
    WHERE @ArtArtikelnummer = Artikelnummer
    
    END
    Leider legt dieser Trigger beim Hinzufügen eines Zubehörartikels im Programm die komplette Datenbank lahm und das Programm stürzt ab.

    Gibt es hier jemand der mir bei meinem Problem helfen kann und mir sagen kann was ich falsch gemacht habe und wie es richtig zu machen ist?

    Vielen Dank schon mal im Voraus für die Hilfe

  • #2
    Der Trigger in der Zubehör-Tabelle ist zunächst mal nicht vollständig, da nicht berücksichtigt/geprüft wird, ob nicht mehrere Datensätze auf einmal eingefügt werden. In diesem Fall würde der Trigger nämlich versagen.
    Und was das eigentliche Problem angeht wäre eine etwas ausführlichere Beschreibung (woran merkt man, das die Datenbank hängt - wie lange dauert es bis zum Crash, wie äussert sich dieser... möglichst aussagekräftige Fehlermeldung) nicht schlecht. Im Raten bin ich nämlich nicht gut. Und auf den ersten Blick schaut der Trigger (bis auf das oben genannte) eigentlich normal aus.

    bye,
    Helmut

    Comment

    Working...
    X