生成新主键

时间:2015-12-13 18:21:06

标签: sql-server

我正在编写一个基本上与另一个用户“共享”播放列表的存储过程。它需要一个表行,创建一个新的主键,并INSERTS一个带有新主键的新行到表中。然后,在插入新主键的情况下复制链接的第二个表中的数据。

在较高级别,我想创建一个具有相同曲目(playlist_msg)的新播放列表,但为新用户生成新的playlist_id,并将相同曲目与新playlist_id相关联1}}。

我的表格结构如下:

playlist_tbl

playlist_id varchar(30) - Primary key
user_id int
description varchar(300)
created_dt datetime

playlist_msg_tbl

playlist_id varchar(30) - Primary key
sequence int - Primary key - basically the track number for the playlist
msg_id varchar(30)

因此,我们的想法是,当共享播放列表时,在存储过程代码中,会生成新的playlist_id并在user_id中分配新的playlist_tbl。然后在playlist_msg_tbl中,与msg_id关联的重复playlist_id INSERTED playlist_msg_tbl playlist_idplaylist_msg_tbl

我的问题是,因为INSERT中的行数不同,我需要弄清楚如何编写某种循环,为{{1中的每一行执行playlist_msg_tbl动态的。

存储过程:

CREATE PROCEDURE [dbo].[Share]
    @description varchar(300),
    @recipientId int
AS
BEGIN
    SET NOCOUNT ON;

    DECLARE @newPlaylistId varchar(30)

    exec dbo.GenerateString 1, 1, 1, null, 30, @newPlaylistId OUT

    INSERT INTO playlist (playlist_id, user_id, description, created_dt)
    VALUES (@newPlaylistId, @recipientId, @description, GETDATE())

    --This is where my theoretical loop would go, not sure how to handle the code for that
END
GO

1 个答案:

答案 0 :(得分:1)

我对你为什么需要一个循环感到有点困惑......

var mom = context.MyOrderModel.Where(m => m.OrderNumber == "00001").Include(m => m.Details).FirstOrDefault(); 只是工作吗?

Seed()