J'ai inséré quelques valeurs dans un tableau. Il y a une colonne dont la valeur est auto-généré. Dans la prochaine déclaration de mon code, je veux récupérer cette valeur.
Pouvez-vous me dire comment faire de la bonne façon?
J'ai inséré quelques valeurs dans un tableau. Il y a une colonne dont la valeur est auto-généré. Dans la prochaine déclaration de mon code, je veux récupérer cette valeur.
Pouvez-vous me dire comment faire de la bonne façon?
C'est la façon dont je fais mon procédures de la banque pour MSSQL avec un ID généré automatiquement.
CREATE PROCEDURE [dbo].[InsertProducts]
@id INT = NULL OUT,
@name VARCHAR(150) = NULL,
@desc VARCHAR(250) = NULL
AS
INSERT INTO dbo.Products
(Name,
Description)
VALUES
(@name,
@desc)
SET @id = SCOPE_IDENTITY();
Cela fonctionne très bien dans SQL 2005:
DECLARE @inserted_ids TABLE ([id] INT);
INSERT INTO [dbo].[some_table] ([col1],[col2],[col3],[col4],[col5],[col6])
OUTPUT INSERTED.[id] INTO @inserted_ids
VALUES (@col1,@col2,@col3,@col4,@col5,@col6)
Il a l'avantage de renvoyer tous les Id si votre instruction INSERT insère plusieurs lignes.
Encore une fois, aucune langue agnostique réponse, mais en Java, il va comme ceci:
Connection conn = Database.getCurrent().getConnection();
PreparedStatement ps = conn.prepareStatement(insertSql, Statement.RETURN_GENERATED_KEYS);
try {
ps.executeUpdate();
ResultSet rs = ps.getGeneratedKeys();
rs.next();
long primaryKey = rs.getLong(1);
} finally {
ps.close();
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.