Announcement

Collapse
No announcement yet.

Aktuelle ID ermitteln

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

  • Aktuelle ID ermitteln

    Hi!
    Ich kenn mich mit MS SQL noch nicht sonderlich gut aus.
    Wenn ich ein Objekt aus dem Programm heraus insertet habe, wie bekomm ich dann am schlausten die ID des neuen Eintrags?

  • #2
    Hi!

    Mit @@IDENTITY bekommst du die letzte eingefuegte ID heraus - funktioniert aber nicht, wenn du zB einen UNIQUEIDENTIFIER als PrimaryKey hast.
    *-- robert.oh. --*

    Comment


    • #3
      Weil's mir eben noch eingefallen ist, ich mach es meistens so, dass ich die ID-Spalte (PK's sind bei mir fast immer GUIDs) bereits im Programmcode ausfuehre und nicht vom DB-System erstellen lasse.
      Auf diese Weise hast du immer gleich die richtige ID zur Verfuegung.
      *-- robert.oh. --*

      Comment


      • #4
        Hi,

        kleine Anmerkung noch:

        Eigentlich ist SCOPE_IDENTITY() Dein Freund:

        http://msdn.microsoft.com/de-de/library/ms190315.aspx

        Gruß,
        Karsten

        Comment


        • #5
          Danke für deine Antwort!

          Also mein PKs sind unique.

          Muss ich dann also über
          select MAX(id) from...
          gehen?

          Finde das irgendwie unschön...

          Comment


          • #6
            Originally posted by Rumtata View Post
            Hi,

            kleine Anmerkung noch:

            Eigentlich ist SCOPE_IDENTITY() Dein Freund:

            http://msdn.microsoft.com/de-de/library/ms190315.aspx

            Gruß,
            Karsten
            Danke auch für deine Antwort!
            Allerdings klappt das auch nicht, da ich das insert-statement mit dem selct SELECT SCOPE_IDENTITY() AS [SCOPE_IDENTITY]
            nicht zusammen absezten kann. Mache ich es getrennt geht der Scope verloren...

            Comment


            • #7
              Hi,

              was geht dabei denn nicht? Insert unt select in einem Batch funktionieren - zumindest bei mir. Evtl. kannst Du etwas Code bereit stellen ...

              Ansonsten schau' Dir mal den OUTPUT-Parameter beim Insert an:

              Code:
              insert into dbo.test (value1, value2) OUTPUT INSERTED.ID values ( 'wert1', 'wert2')
              Hierbei wird Dir auch der neue eingefügte ID-Wert zurückgegeben ...

              HTH,
              Karsten

              Comment


              • #8
                Hi,

                Ich weiss nicht welche Programmiersprache du verwendest, oder wie du den SQL Command absetzt, aber es ist moeglich zwei SQL Command 'auf einmal' auszufuehren, indem man sie mit einem ';' trennt.

                In deinem Fall koennte der EINE Command so aussehen:

                INSERT INTO tabelle1 (spalte1) VALUES ('bla'); SELECT SCOPE_IDENTITY() AS ident1
                *-- robert.oh. --*

                Comment

                Working...
                X