2012-04-19 14 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という別のテーブルがあります。同じ手順で、カラムpostidtagを持つテーブルTagに値を挿入したいと思います。しかし、tagテーブルに値を挿入できません。意味はpostid=2私はこのような結果が欲しい。

タグ

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

感謝。サイドノートとして

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 

答えて

0

は、最新の挿入されたID値を取得し、2番目の挿入でそれを使用する必要があるあなたがないストアドプロシージャのsp_接頭辞を使用する必要があります。これは、マイクロソフトが独自に使用するために予約したプレフィックスです。これが正しく動作しない、または速度が低下する可能性があるというリスクがあります。 proc_ようなものか、すべての... suggestion.Iため

+0

おかげで() 'SCOPE_IDENTITY'を通じてポストIDを取得なし接頭辞を使用するが、私は、データ 'C#の、ASPを分割することができますどのように - 私はsp_接頭辞を避けるだろう。 net、mvc'を実行し、 'Tag'テーブルに挿入します。 –

+0

@ShreeKhanal:これには数多くの投稿があります。GoogleまたはBingだけです。またはいくつかの便利なリンクと[この他の質問は](http://stackoverflow.com/questions/2647/split-string-in-sql)を参照してください.... –

関連する問題