sql server-如何通过过程插入多个表映像
我有5个相互连接的表,因此每个用户都可以插入带有图像的故事(nvarchar)。我想更改我的过程,以便它能够在每个故事中插入多个图像。你能帮我一把吗?(我应该创建两个程序,以及如何更改这一个) 在我完成它之后,我想创建一个新的过程来获取故事(nvarchar)及其所有图像。 你能帮助我知道如何改变dbo.stroyes表和其他表,使dbo.stroyes有一个包含许多图片的故事吗 我的程序(只有一张图片):sql server-如何通过过程插入多个表映像,sql,sql-server,database,stored-procedures,datatable,Sql,Sql Server,Database,Stored Procedures,Datatable,我有5个相互连接的表,因此每个用户都可以插入带有图像的故事(nvarchar)。我想更改我的过程,以便它能够在每个故事中插入多个图像。你能帮我一把吗?(我应该创建两个程序,以及如何更改这一个) 在我完成它之后,我想创建一个新的过程来获取故事(nvarchar)及其所有图像。 你能帮助我知道如何改变dbo.stroyes表和其他表,使dbo.stroyes有一个包含许多图片的故事吗 我的程序(只有一张图片): 感谢您的帮助:)正如我在您上一篇文章的评论中所解释的那样:如果要将多个图像链接到一个故
感谢您的帮助:)正如我在您上一篇文章的评论中所解释的那样:如果要将多个图像链接到一个故事,请不要使用
Stories
表的imgID2
列。除非它有某种用途(我们不知道),否则该列可以删除。相反,要添加新故事的第一个图像,请使用类似于您的步骤:
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
要向故事添加其他图像,应用程序必须已经知道相关故事的StoryID
,并且可以添加调用存储过程的每个图像,如下所示:
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
SELECT Table_Users.UserID , Stories.StoryID, Images.imgID
FROM dbo.Images
INNER JOIN dbo.imagesInStories ON Images.imgID = imagesInStories.imgID3
INNER JOIN dbo.Stories ON imagesInStories.StoryID3 = Stories.StoryID
INNER JOIN dbo.Users_Stories ON Stories.StoryID = Users_Stories.StoryID2
INNER JOIN dbo.Table_Users ON Users_Stories.ID2 = Table_Users.UserID
最后,要使用所有图像查询所有用户故事,请使用如下查询:
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
SELECT Table_Users.UserID , Stories.StoryID, Images.imgID
FROM dbo.Images
INNER JOIN dbo.imagesInStories ON Images.imgID = imagesInStories.imgID3
INNER JOIN dbo.Stories ON imagesInStories.StoryID3 = Stories.StoryID
INNER JOIN dbo.Users_Stories ON Stories.StoryID = Users_Stories.StoryID2
INNER JOIN dbo.Table_Users ON Users_Stories.ID2 = Table_Users.UserID
不要将DDL作为图像发布,而应将其作为
文本发布。是否确实选择了用于存储图像的正确数据类型?我认为varbinary(max)
(可能还有一个用于存储其MIME类型的附加列)更合适/涉及更少不必要的转换。大多数图像格式都是二进制格式。只要我和你知道谁写了这个程序(我试了很多次之后),就可以了。如果这里的一些人不是很好而且有道德感,他们会对我和我的帖子发表评论……别担心,我非常欣赏你。谢谢