2011-06-07 42 views
0

我建立一個論壇,我有兩個表:插入到兩個表和Identity_Scope()

Threads 
------- 
ThreadID 
UsersID 
Date 
ThreadTitle 
ThreadParagraph 
ThreadClosed 


Topics 
----- 
TopicsID 
Theme 
Topics 
Date 

該線程ID被連接到用戶表具有主鍵: Topics.TopicsID(PK)= = Threads.TopicID(FK)

首先我插入主題表格,然後插入線程表。我的目標是獲得Topics.TopicID與Identity_Scope(標識),並把它傳遞給第二插件是Threads.TopicID

這裏是我做了什麼,但我不知道這是否是正確的:

StringBuilder insertCommand = new StringBuilder(); 
    insertCommand.Append("DECLARE @TopicsID int"); 
    insertCommand.Append("INSERT INTO Topics(Theme,Topics,Date)"); 
    insertCommand.Append("VALUES('@topic,@subTopic,GETDATE()')"); 
    insertCommand.Append("SET @TopicsID = SCOPE_IDENTITY()"); 

    insertCommand.Append("INSERT INTO Threads(UsersID,TopicsID,Date,ThreadTitle,ThreadParagraph,ThreadClosed)"); 
    insertCommand.Append("VALUES('@uniqueIdentifier,@TopicsID,GETDATE(),@questionTitle,@questionParagraph,0')"); 

我已經得到了用戶按下或輸入信息的控件獲得的所有信息,所以不用擔心。所有我擔心的是從主題表傳遞相同的TopicID到線程表(列名:TopicID)。

+1

它是'SCOPE_IDENTITY',而不是'IDENTITY_SCOPE'。看到這個相關的問題:http://stackoverflow.com/q/42648/1583 – Oded 2011-06-07 08:47:25

+0

你需要聲明變量@TopicSID – Magnus 2011-06-07 08:50:33

+0

'VALUES('@ topic,@ subTopic,GETDATE()''是絕對錯誤的 - 它缺少一個終止')',並且錯過了傳遞單獨值的事實,而不是'VALUES'子句中的'''分隔符「字符串。去除'VALUES'子句中的'''標記。 – 2011-06-07 09:25:49

回答

0

這兩個Magnus & Damien_The_Unbeliever是正確的 - 你有幾個語法錯誤(或錯別字)。正確的插入命令應該是類似於

insertCommand.Append(@" 
      DECLARE @TopicSID int 

      INSERT INTO Topics(Theme,Topics,Date) 
      VALUES(@topic,@subTopic,GETDATE()) 

      SET @TopicSID = SCOPE_IDENTITY() 

      INSERT INTO Threads(UsersID,TopicsID,Date,ThreadTitle,ThreadParagraph,ThreadClosed) 
      VALUES(@uniqueIdentifier,@TopicSID ,GETDATE(),@questionTitle,@questionParagraph,0) 
    "); 
+0

我糾正了它。但是現在我得到:關鍵字'INTO'附近的語法不正確。 必須聲明標量變量「@TopicsID」。 INSERT語句中的列數多於VALUES子句中指定的值。 VALUES子句中的值數量必須與INSERT語句中指定的列數相匹配。 – WithFlyingColors 2011-06-07 10:18:03