Как получить первичный ключ последней строки, вставленной в таблицу - PullRequest
1 голос
/ 11 мая 2011

Я использую многовидовой индекс для вставки деталей новостей.В первом представлении пользователь может вводить подробности о новостях, которые затем вставляются в базу данных при нажатии следующей кнопки. Во втором представлении пользователь может добавлять изображения этих новостей (разрешено только 3 изображения),

, что я естьпроблема заключается в том, что первое представление вставляет данные в таблицу dbo.newsdetail с первичным ключом newsID, в то время как второе представление должно добавлять уважаемые изображения с использованием этого newsId новости, только что добавленной в таблицу newsimages.Я просто не знаю, как получить newsID деталей, которые добавляются в первом представлении, поскольку ID новостей работает как внешний ключ для обеих таблиц.Любая помощь или предложения будут высоко оценены.

 static public void insertNews(string newsDescription, string newsImage, string newsTitle)
{
    SqlConnection conn = new SqlConnection(ConnectionString);
    conn.Open();
    SqlCommand insertNews = new SqlCommand("Insert INTO caravanNews(newsDescription, newsImage, newsTitle) VALUES ('" + newsDescription + "', '" + newsImage + "' , '" + newsTitle + "')",conn);
    insertNews.ExecuteNonQuery();
    conn.Close();

}

Ответы [ 2 ]

2 голосов
/ 11 мая 2011

Отдельный оператор SQL

SELECT SCOPE_IDENTITY()

Или предложение OUTPUT

INSERT MyTable (...=
OUTPUT INSERTED.KeyCol
VALUES (...) --Or SELECT ... FROM Another table)

Edit:

  • измените оператор вставки, чтобы он соответствовал моему
  • изменить .ExecuteNonQuery () на blah = xxx.ExecuteScalar ()
0 голосов
/ 11 мая 2011

Как часть вашего оператора INSERT (в первую таблицу News), после его выполнения выполните

SELECT SCOPE_IDENTITY()

и верните NewsId значение вызывающей стороне.

Ref.

...