ちょっとした趣味で SQL Server を独学しています。リレーショナル テーブルにデータを挿入する作業に行き詰まりました。リレーショナル テーブルの概念は理解しています。
以前に挿入された行の ID を変数として取得して、残りのクエリで FK として使用する方法を誰かに教えてもらえないかと思っていました。
ここに私の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
私がオンラインで見た例は、このようにやっているようですが、VSから典型的な不可解なエラーが発生しています
(76,1): SQL72014: .Net SqlClient データ プロバイダー: メッセージ 207、レベル 16、状態 1、プロシージャ q_insertuser、行 19 列名 'userid' が無効です。
バッチの実行中にエラーが発生しました。
ただし、列名 userid は、クエリしているテーブルに存在します。