Je m'apprends à SQL Server comme un passe-temps. Je suis coincé avec l'insertion de données dans des tables relationnelles, je comprends les idées des tables relationnelles. Je me demandais si quelqu'un pouvait me dire comment je peux obtenir l'identité de la ligne précédemment insérée, la stocker en tant que variable à utiliser comme FK dans les requêtes restantes.Comment insérer dans des tables relationnelles
Voici mon code TSQL:
CREATE PROCEDURE [dbo].[q_insertuser]
@username varchar(50),
@hash varchar(MAX),
@name varchar(50),
@email varchar(MAX),
@address varchar(MAX),
@city varchar(50),
@postcode varchar(50)
AS
--INSERT USERNAME
INSERT INTO tab_user
(username)
VALUES
(@username)
--Selects the Userid to be used
DECLARE @UID INT
SET @UID = INT FOR SELECT *
FROM tab_user
WHERE (userid = SCOPE_IDENTITY())
--INSERT PASSWORD
INSERT INTO tab_pass
(userid, hash)
VALUES
(@UID ,@hash)
--INSERT Address
INSERT INTO tab_contact
(userid,name, email, address, city, postcode)
VALUES
(@UID ,@name, @email, @address, @city, @postcode)
--RETURN 0
Les exemples que j'ai vu en ligne semblent être ce faire de cette façon, mais je reçois une erreur cryptique typique de VS
(76,1): SQL72014: fournisseur de données SqlClient .Net: Msg 207, niveau 16, état 1, procédure q_insertuser, ligne 19 Nom de colonne non valide "ID utilisateur".
Une erreur s'est produite lors de l'exécution du lot. Toutefois, le nom de la colonne userid est la table que j'interroge.
Une autre méthode consiste à utiliser la clause 'OUTPUT'. – a1ex07
Merci qui a parfaitement fonctionné. – Qu1nncunxIV