2009-05-06 8 views
4

Ma base de données possède une table parent avec une identité de clé primaire auto-incrémentée 'ID' et une colonne 'TIMESTAMP' normale. J'ai des tables enfant avec une clé étrangère qui se réfèrent à la colonne 'ID' parent.SQL Server: récupérer l'ID auto-incrémenté dans une procédure stockée?

Je souhaite écrire une procédure stockée qui insère une nouvelle colonne dans les bases de données parent et enfant. Comment définir la colonne 'ID' de l'enfant pour qu'elle soit égale à la nouvelle colonne 'ID' parent auto-incrémentée? Est-ce que cela nécessite un séparé:

SELECT TOP 1 * FROM PARENT_TABLE 

Ou existe-t-il une autre façon?

+0

Si vous utilisez le SCOPE_IDENTITY, assurez-vous de lire les remarques dans la documentation (http://msdn.microsoft.com/en-us/library/ms190315(SQL.90).aspx); surtout si vous avez un déclencheur sur la table dans laquelle vous insérez. –

Répondre

8

Vous pouvez le récupérer à partir de SCOPE_IDENITY(). Par exemple:

declare @myid int 
INSERT INTO table (field) VALUES ('value') 
SELECT @myid = SCOPE_IDENTITY() 
0

Sélectionnez scope_identity();

Questions connexes