我正在编写一个基本上与另一个用户“共享”播放列表的存储过程。它需要一个表行,创建一个新的主键,并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_id
新playlist_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
答案 0 :(得分:1)
我对你为什么需要一个循环感到有点困惑......
var mom = context.MyOrderModel.Where(m => m.OrderNumber == "00001").Include(m => m.Details).FirstOrDefault();
只是工作吗?
Seed()