Announcement

Collapse
No announcement yet.

Trigger für: neuen Eintrag auf vorhandene Werte / Datensätze prüfen

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

  • Trigger für: neuen Eintrag auf vorhandene Werte / Datensätze prüfen

    Hallo zusammen,
    ich habe schon den einen oder anderen Trigger für MySQL erstellt aber mit dem MS SQL Server bin ich einfach überfodert und hoffe auf eure Hilfe.
    Ich versuche mal mein Problem zu erläutern.
    Tabelle (ListSorting) mit 4 Feldern:
    1: Spectype (int)
    2: CatalogID (int)
    3: ItemID (int)
    4: Order (int)

    Wenn nun ein neuer Datensatz hinzu kommt soll geprüft werden ob es bereits einen Datensatz gibt der bei
    Spectype + CatalogID + Order
    genau die gleichen Werte enthält wie der neue. Ist dies der Fall soll der neue nicht eingefügt (bzw. gelöscht) werden. Ohne Nachfrage, Benachrichtigung oder sonstiges.

    Bitte keinen Antwort-Link zu...http://msdn.microsoft.com/de-de/library/ms189799.aspx .... Leider kann ich damit nichts anfangen ...Sorry...

    Vielen Dank schon einmal!!!!!!!!!!!!!!!!!

  • #2
    Originally posted by Nike77 View Post
    Hallo zusammen,
    ich habe schon den einen oder anderen Trigger für MySQL erstellt aber mit dem MS SQL Server bin ich einfach überfodert und hoffe auf eure Hilfe.


    Wenn nun ein neuer Datensatz hinzu kommt soll geprüft werden ob es bereits einen Datensatz gibt der bei
    Spectype + CatalogID + Order
    genau die gleichen Werte enthält wie der neue. Ist dies der Fall soll der neue nicht eingefügt (bzw. gelöscht) werden. Ohne Nachfrage, Benachrichtigung oder sonstiges.

    MySQL geschädigt? Unique indexe gibts es aber sogar da schon.

    Comment


    • #3
      Nein... einfach nur blutiger Anfänger. Die Trigger in MySQL habe ich mit viel Mühe und viel Hilfe erstellt.
      ---
      indexe ?? Warum Index?
      Evtl. noch ein kleiner Zusatz, an den Tabellen und deren Fuktion kann / darf ich so viel nicht verändern...

      Comment


      • #4
        Originally posted by Nike77 View Post
        Nein... einfach nur blutiger Anfänger. Die Trigger in MySQL habe ich mit viel Mühe und viel Hilfe erstellt.
        ---
        indexe ?? Warum Index?
        Evtl. noch ein kleiner Zusatz, an den Tabellen und deren Fuktion kann / darf ich so viel nicht verändern...

        Weil Unique Indexe extra für das geschaffen wurdest, was Du grad erfinden willst.

        Comment


        • #5
          Das mag alles sein nur hilft mir das an dieser Stelle/ oder so.. nicht weiter

          Comment


          • #6
            Hallo,

            schaue dir mal den INSTEAD-OF-Trigger an: http://technet.microsoft.com/de-de/l...ql.105%29.aspx
            Damit kann man das Insert abfangen, wenn die Daten passen schreibst du die in die Tabelle, ansonsten einfach nichts tun ...

            bye,
            Helmut

            Comment


            • #7
              Hallo zusammen, habe jetzt viel gelesen und mich für Unique indexe entschieden.
              Nun habe ich beim Einrichten das Problem das ich die Fehlermeldung 2300 (doppelte Datensätze) habe.
              Diese habe ich jetzt gefunden:

              SELECT A.SpecType, A.ItemID, A.Orderl
              FROM ListSorting_copy As A
              GROUP BY A.SpecType, A.ItemID, A.Orderl
              HAVING COUNT(*) > 1



              Wie kann ich diese Datensätze jetzt löschen?


              Ich wollte es ganz einfach machen aber das geht leider nicht :-)

              WITH listNike AS(
              SELECT A.SpecType, A.ItemID, A.Orderl
              FROM ListSorting_copy As A
              GROUP BY A.SpecType, A.ItemID, A.Orderl
              HAVING COUNT(*) > 1
              )
              DELETE FROM listNike

              -> [Err] 42000 - [SQL Server]Die Sicht oder Funktion 'listnico' kann nicht aktualisiert werden, da sie Aggregate oder eine DISTINCT- bzw. GROUP BY-Klausel oder einen PIVOT- bzw. UNPIVOT-Operator enthält.

              Comment


              • #8
                Geschafft....
                Alle doppelten Datensätze sind gelöscht!

                Comment


                • #9
                  Nun wollte ich mein Index erstellen und bekomme folgende Meldung:
                  Wo finde ich den vorhandenen?
                  Unbenannt-1.jpg

                  Comment


                  • #10
                    Wofür könnte wohl die Abkürzung PK Im Namen des Indexes stehen Wenn du einen Primary Key anlegst und nichts entsprechend anderes angibst wird dafür ein Clustered Index verwendet.
                    Warum möchtest du deinen neuen Index den auch als Clustered anlegen?

                    Comment


                    • #11
                      Es ist ja gar nicht klar, welcher Index zuletzt angelegt wurde oder schon da war, PK oder Clustered?
                      Vielleicht nur irrtümlich einen Index doppelt angelegt?
                      Gruß, defo

                      Comment


                      • #12
                        PK oder Clustered?
                        Der PK ist ein Index und üblicherweise Clustered also eher und als oder

                        Comment

                        Working...
                        X