2

我有两张桌子:

  • 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

问题是?????????????:我不知道放什么我想把我插入的房间放在上面。

4

2 回答 2

3

您可以使用output从句。在此处查看 MSDN:OUTPUT 子句(Transact-SQL)

例子:

declare @tbl table
(
    NewID int
)

insert into Rooms(ManagerId,Topic)
output inserted.ID into @tbl
values(@MangerId,@Topic)

然后 table 变量将包含赋予您插入的行的新 id

于 2013-04-21T19:54:32.343 回答
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此特定范围内最后插入的值 - 您的存储过程的范围。

于 2013-04-21T19:58:12.353 回答