@@IDENTITY

23/04/2008 - 12:21 von Achim Ehlers | Report spam
Hallo Ng,

ich bin auf dem server X1 angemeldet.
beim einfügen eines Datensatzes in eine Tabelle mit Identitàtsspalte vom
Server X1 gibt mir die Funktion @@IDENTITY den zuletzt generierten Wert
zurück,
versuche ich das gleiche aber auf dem Server X2 gibt mir nach einem insert
die @@IDENTITY Funktion NULL zurück, obwohl ein neuer Datensatz angelegt
wurde.

insert into x1.db.dbo.test (b) values ('test')
@@identity => irgendEinWert
irinsert into x2.db.dbo.test (b) values ('test')
@@identity => NULL


bin ich auf x2 angemeldet und versuche das gleiche, verhàlt es sich
entsprechend
insert into x1.db.dbo.test (b) values ('test')
@@identity => NULL
insert into x2.db.dbo.test (b) values ('test')
@@identity => irgendEinWert

wie muß ich vorgehen, damit ich den letzten generierten Primàrschlüssel
erhalte, wenn ich daten auf einem remote Rechner anfüge.




Gruß Achim
 

Lesen sie die antworten

#1 Christoph Muthmann
23/04/2008 - 13:10 | Warnen spam
Achim Ehlers wrote:
Hallo Ng,

ich bin auf dem server X1 angemeldet.
beim einfügen eines Datensatzes in eine Tabelle mit Identitàtsspalte
vom Server X1 gibt mir die Funktion @@IDENTITY den zuletzt
generierten Wert zurück,
versuche ich das gleiche aber auf dem Server X2 gibt mir nach einem
insert die @@IDENTITY Funktion NULL zurück, obwohl ein neuer
Datensatz angelegt wurde.

insert into x1.db.dbo.test (b) values ('test')
@@identity => irgendEinWert
irinsert into x2.db.dbo.test (b) values ('test')
@@identity => NULL


bin ich auf x2 angemeldet und versuche das gleiche, verhàlt es sich
entsprechend
insert into x1.db.dbo.test (b) values ('test')
@@identity => NULL
insert into x2.db.dbo.test (b) values ('test')
@@identity => irgendEinWert

wie muß ich vorgehen, damit ich den letzten generierten
Primàrschlüssel erhalte, wenn ich daten auf einem remote Rechner
anfüge.



Hallo Achim,
ich habe es nicht ausprobiert, vermute aber, dass
IDENT_CURRENT( 'table_name' )Dein Problem löst.

Hinweise
IDENT_CURRENT àhnelt den Identitàtsfunktionen SCOPE_IDENTITY und
@@IDENTITY von SQL Server 2000. Alle drei Funktionen geben die zuletzt
generierten Identitàtswerte zurück. Der Gültigkeitsbereich und die
Sitzung, für die zuletzt definiert ist, unterscheiden sich jedoch bei
jeder dieser drei Funktionen:

IDENT_CURRENT gibt den letzten für eine bestimmte Tabelle in einer
Sitzung oder einem Gültigkeitsbereich generierten Identitàtswert
zurück.

@@IDENTITY gibt den letzten Identitàtswert zurück, der für eine Tabelle
in der aktuellen Sitzung in allen Gültigkeitsbereichen generiert wurde.

SCOPE_IDENTITY gibt den letzten Identitàtswert zurück, der für eine
Tabelle in der aktuellen Sitzung im aktuellen Gültigkeitsbereich
generiert wurde.


Einen schönen Tag noch,
Christoph
(Please post ALL replies to the newsgroup only unless indicated
otherwise)

Ähnliche fragen