Announcement

Collapse
No announcement yet.

Mehrbenutzerfähigkeit von @@IDENTITY?

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

  • Mehrbenutzerfähigkeit von @@IDENTITY?

    Hallo zusammen,
    <br><br>
    angenommen man hat eine Tabelle A mit einem Primarschlüssel als Identity und eine Detailtabelle B, die über einen FOREIGN-KEY Constraint auf Tabelle A referenziert.
    <br><br>
    Ich möchte nun in einem Trigger für Tabelle C einen Datensatz in Tabelle A, und danach zu diesem neu angelegten Datensatz eine Reihe von Datensätzen in Tabelle B anlegen. Dazu brauch ich natürlich die zuletzt vergebene Identity aus Tabelle A, um in Tabelle B die Datensätze anlegen zu können. Ich kann die zuletzt vergebene Identity mit <b>@@IDENTITY</b> ermitteln. Meine Frage ist nun aber, ob diese Sache mehrbenutzerfähig ist, d.h. ob garantiert ist, dass ich nicht eine Identity von einem anderen INSERT Statement vorgegaukelt bekomme?
    <br><br>
    In InterBase/Firebird bin ich es gewöhnt in einem Trigger mir vorher einen nächsten Generatorwert in einer Variable zu speichern, und diesen Wert dann durchgehend zu verwenden.
    <br><br>
    Für etwaige Tipps wäre ich dankbar!
    <br><br>
    Schöne Grüße,<br>
    Thomas
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

  • #2
    Hallo,

    der MS SQL Server unterstützt gleich 3 verschiedene Funktionen: <br>
    1. @@IDENTITY <br>
    2. SCOPE_IDENTITY <br>
    3. IDENT_CURRENT

    In der Dokumentation steht dazu folgendes: "<i>
    @@IDENTITY und SCOPE_IDENTITY geben den letzten Identitätswert zurück, der in einer Tabelle in der <b>aktuellen Sitzung</b> generiert wurde</i>".

    Somit gilt @@IDENTITY immer nur für die eigene Session, wobei allerdings immer die zuletzt ausgelöste Aktion (Trigger!) "gezählt" wird. Im Gegensatz dazu liefert IDENT_CURRENT den Wert nur für die angegebene Tabelle zurück, so dass ein Trigger das Ergebnis nicht verfälschen kann

    Comment


    • #3
      Besten Dank, Andreas!
      <br><br>
      Schöne Grüße,<br>
      Thoma
      Thomas Steinmaurer

      Firebird Foundation Committee Member
      Upscene Productions - Database Tools for Developers
      Mein Blog

      Comment

      Working...
      X