Вставка в две таблицы и Identity_Scope () - PullRequest
0 голосов
/ 07 июня 2011

Я создаю форум и у меня есть две таблицы:

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


Topics
-----
TopicsID
Theme
Topics
Date

ThreadID связан с таблицей пользователей с помощью первичного ключа: 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 из таблицы Topic в таблицу Thread (имя столбца: TopicID).

1 Ответ

0 голосов
/ 07 июня 2011

Оба Магнус и 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)
    ");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...