Как получить первичный ключ последней строки, вставленной в таблицу

#asp.net #sql #database #multiview

#asp.net #sql #База данных #multiview

Вопрос:

Я использую multiview index для вставки сведений о новостях. В первом представлении пользователь может ввести подробную информацию о новостях, которая затем вставляется в базу данных при нажатии кнопки «Далее». Второе представление позволяет пользователю добавлять изображения этой новости (разрешено только 3 изображения) ,

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

  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();

}
  

Комментарии:

1. Какую СУБД вы используете? С PostgreSQL вы могли бы использовать INSERT ... RETURNING ...

Ответ №1:

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

 SELECT SCOPE_IDENTITY()
  

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

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

Редактировать:

  • измените свой оператор insert, чтобы он соответствовал моему
  • измените .ExecuteNonQuery() в blah = xxx.ExecuteScalar()

Комментарии:

1. мне нужно сохранить этот идентификатор для использования другим методом в коде, я отредактировал код, можете ли вы предоставить мне запрос, пожалуйста

Ответ №2:

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

 SELECT SCOPE_IDENTITY()
  

и вернуть NewsId значение вызывающему.

Ссылка.

Комментарии:

1. мне нужно сохранить этот идентификатор для использования другим методом в коде, я отредактировал код, можете ли вы предоставить мне запрос, пожалуйста