2012-04-19 47 views
1

我的程序是:拆分並保存在SQL Server

CREATE PROCEDURE [dbo].[sp_SavePost] 
    @PostTitle NVARCHAR(max), 
    @PostDescription NVARCHAR(max), 
    @PostDate DATETIME, 
    @Author NVARCHAR(100), 
    @Tag NVARCHAR(250), --it bring c#,asp.net,mvc 
    @Category NVARCHAR(250) 
AS 
BEGIN 
    INSERT INTO [dbo].[ForumPost](PostTitle, PostDescription, PostDate, 
           Author, Tag, Category) 
    VALUES(@PostTitle, @PostDescription, @PostDate, 
      @Author, @Tag, @Category) 
END 

[dbo].[ForumPost]具有postid這是自動遞增。還有另一個表Tag。在相同的過程中,我想插入一個值爲Tag表,其中列postidtag。但無法在tag表中插入值。意思是,如果postid=2我想要這樣的結果。

標籤

postid | tag 
------------ 
2  | c# 
2  | asp.net 
2  | mvc 

感謝。

回答

0

你需要得到最新的插入的標識值,然後在你的第二個插入使用它:

CREATE PROCEDURE [dbo].[sp_SavePost] 
    ..... 
AS 
BEGIN 
    INSERT INTO [dbo].[ForumPost](PostTitle, PostDescription, PostDate, 
           Author, Tag, Category) 
    VALUES(@PostTitle, @PostDescription, @PostDate, 
      @Author, @Tag, @Category) 

    -- declare variable to hold newly inserted IDENTITY value 
    DECLARE @NewPostID INT 

    -- fetch the newly inserted IDENTITY value 
    SELECT @NewPostID = SCOPE_IDENTITY() 

    -- use that value in the next INSERT into the "Tag" table 
    INSERT INTO dbo.Tag(PostId, ......) 
    VALUES(@NewPostID, .......) 
END 

作爲一個側面說明:你應該使用sp_前綴爲您的存儲過程。這是微軟保留供其自己使用的前綴。有可能無法正常工作,或者可能會導致速度減慢。我會避免sp_前綴 - 使用類似proc_或沒有前綴,所有...

+0

感謝suggestion.I通過'SCOPE_IDENTITY取得帖子ID() '但是我怎麼可以拆分數據'C#,ASP。 net,mvc'並插入到'Tag'表中。 – 2012-04-19 05:15:50

+0

@ShreeKhanal:這裏有**的帖子** - 只需Google或Bing就可以了!或者看看[這個其他SO問題](http://stackoverflow.com/questions/2647/split-string-in-sql)與幾個有用的鏈接.... – 2012-04-19 05:17:11