Tor
Rufen Sie den neuesten Richtwert in Echtzeit ab, nachdem Sie den Wert in die Tabelle eingefügt haben
Problem
Ich weiß nicht, wie es geht
Die Info
- Der Code sollte nur neue Werte für Adresse und Postleitzahl angeben
- Die Tabelle kann viele Daten enthalten
Tabelle
CREATE TABLE [AddressBook]
(
[testID] [uniqueidentifier] NOT NULL default newid(),
[address] [nvarchar](50) NULL,
[zipcode] [nvarchar](50) NULL
)
Antworten:
Ich denke, Sie suchen nach Ausgabe
Die eindeutige Kennung ist hier möglicherweise nicht die effizienteste ID, dies ist jedoch eine Antwort auf die angegebene Frage
quelle
INSERTED.[testID]
die Eigenschaft dessen ist, was Sie aus der Zeile möchten, nicht der Name der Eigenschaft in@MyTableVar
Ergebnis: -59A6D7FE-8C9A-4ED3-8FC6-31A989CCC8DB
quelle
Im Allgemeinen gibt es zwei verschiedene Möglichkeiten, um nach dem Einfügen einen Identitätswert zu erhalten, indem Sie SQL SERVER SCOPE_IDENTITY / IDENT_CURRENT / @@ IDENTITY oder SQL SERVER OUTPUT verwenden .
SQL SERVER SCOPE_IDENTITY / IDENT_CURRENT / @@ IDENTITY. Während SCOPE_IDENTITY / IDENT_CURRENT / @@ IDENTITY ähnliche Funktionen ausführen, unterscheiden sich die von jedem zurückgegebenen Werte je nach aktuellem Bereich, z. B. gespeicherte Prozedur, Trigger, Batch. Die Dokumentation sollte gelesen und verstanden werden, bevor festgelegt wird, welche verwendet werden soll.
CREATE TABLE Test (TestID INT IDENTITY (1,1), TestName VARCHAR (20) NICHT NULL)
INSERT TEST VALUES ('Test1', 'Test2', 'Test3'); SELECT @@ IDENTITY, SCOPE_IDENTIY ();
In diesem Beispiel geben beide @@ IDENTITY, SCOPE_IDENTIY () 3 zurück, da sie sich im selben Bereich befinden. Je nach Umfang können sie jedoch unterschiedliche Werte zurückgeben.
Mit der SQL SERVER-Ausgabe können Sie auf alle Zeilen zugreifen, die von einer INSERT / DELETE / UPDATE- oder Merge-Anweisung zurückgegeben wurden. Möglicherweise müssen Sie eine Variable verwenden, um auf die Identität zuzugreifen. Die Links bieten umfassendere Informationen.
quelle
SCOPE_IDENTITY()
etc füridentity()
Spalten funktioniert, funktioniert es nicht füruniqueidentifier
Spalten mit einernewid()
oder einernewsequentialid()
Standardbeschränkung.Ein anderer Weg,
quelle
default
Einschränkung generierte Wert abgerufen werden soll. Dies beantwortet diese Frage nicht, obwohl es eine Problemumgehung bietet.