我有两张桌子:
Rooms
:
ID
(自动递增主键,int
)Topic
(varchar(50)
)MangerId
(varchar(50)
)Rooms_Users
:
UserId
(varchar(50)
)RoomId
(varchar(50)
)我想插入一个房间,但我也必须将马槽插入到桌子rooms_users
。
这是我到目前为止所做的:
ALTER PROCEDURE [dbo].[Creat_Room] @MangerId varchar(50) ,@Topic varchar(50)
AS
BEGIN
SET NOCOUNT
insert into Rooms(ManagerId,Topic) values(@MangerId,@Topic)
insert into Rooms_Users(UserId,RoomId) values(@MangerId,?????????????)
END
?????????????
是问题所在:我不知道该放什么,我想把上面插入的房间放在上面。
答案 0 :(得分:3)
您可以使用output
子句。在这里查看MSDN:OUTPUT Clause (Transact-SQL)
示例:
declare @tbl table
(
NewID int
)
insert into Rooms(ManagerId,Topic)
output inserted.ID into @tbl
values(@MangerId,@Topic)
然后表变量将包含给你插入的行的新id
答案 1 :(得分:0)
使用SCOPE_IDENTITY()
功能:
ALTER PROCEDURE [dbo].[Create_Room]
@ManagerId varchar(50),
@Topic varchar(50)
AS
BEGIN
DECLARE @NewRoomID INT
insert into Rooms(ManagerId, Topic) values(@MangerId, @Topic)
SELECT @NewRoomID = SCOPE_IDENTITY()
insert into Rooms_Users(UserId, RoomId) values(@ManagerId, @NewRoomID)
END
此函数将返回此特定范围中最后插入的IDENTITY
值 - 存储过程的范围。