sql server-如何通过过程插入表多个图像

时间:2018-08-12 20:47:11

标签: sql sql-server database stored-procedures datatable

我有5个相互连接的表,因此每个用户都可以将故事(s)(nvarchar)与图像(nvarchar)插入。我想更改程序,以便每个故事可以插入多个图像。您能帮忙吗(我应该创建两个过程,以及如何更改这一过程)?

完成该操作后,我想创建一个新的过程来获取包含所有图像的故事(nvarchar)。 您能帮我知道如何更改表dbo.Stroies以及其他如何更改表dbo.Stroies的故事,其中包含许多图像吗?

My connected tables

我的程序(只有一张照片):

CREATE PROC UserStory    
 @UserID [int],
 @img [varchar] (max),
 @story [nvarchar] (120)

 AS
 BEGIN

    DECLARE @StoryID int, @ImageID int;

    INSERT INTO Images ([img]) VALUES (@img)
    SET @ImageID = SCOPE_IDENTITY();


    INSERT INTO Stories ([StoryText], [imgID2]) VALUES (@story, @ImageID)
    SET @StoryID = SCOPE_IDENTITY();

    INSERT INTO dbo.imagesInStories (StoryID3, imgID3)
    VALUES (@StoryID, @ImageID);

    INSERT INTO dbo.Users_Stories (ID2, StoryID2)
    VALUES (@UserID, @StoryID);
    END

    Go

感谢助手:)

1 个答案:

答案 0 :(得分:0)

正如我已经在您上一篇文章的评论中试图解释的那样:如果打算将多个图片链接到 Story ,请不要使用{ imgID2表的{1}}列。除非有特定目的(我们不知道),否则可以删除该列。相反,要添加新的 Story 的第一个 Image ,请使用与您的过程类似的过程:

Stories

要将其他图片添加到 Story 中,应用程序必须已经知道所讨论的 Story CREATE PROC AddUserStory @UserID [int], @img [varchar] (max), @story [nvarchar] (120) AS BEGIN DECLARE @StoryID int, @ImageID int; INSERT INTO Images ([img]) VALUES (@img); SET @ImageID = SCOPE_IDENTITY(); INSERT INTO Stories ([StoryText]) VALUES (@story); SET @StoryID = SCOPE_IDENTITY(); INSERT INTO dbo.imagesInStories (StoryID3, imgID3) VALUES (@StoryID, @ImageID); INSERT INTO dbo.Users_Stories (ID2, StoryID2) VALUES (@UserID, @StoryID); END ,并且可以添加每个单独的 Image 来调用这样的存储过程:

StoryID

最后,要使用所有图像查询所有 User_Stories ,请使用类似以下查询:

CREATE PROC AddImageToStory    
  @StoryID [int],
  @img [varchar] (max),

 AS
 BEGIN

   DECLARE @ImageID int;

   INSERT INTO Images ([img])
   VALUES (@img);
   SET @ImageID = SCOPE_IDENTITY();

   INSERT INTO dbo.imagesInStories (StoryID3, imgID3)
   VALUES (@StoryID, @ImageID);

END