Получить первые таблицы вставленных значений во вторую таблицу - PullRequest
0 голосов
/ 18 января 2019

У меня есть два запроса с областью транзакции. Мне нужно вставить первое значение вставленной таблицы в мою таблицу данных. Здесь моя NewsId в первой таблице - это первичный ключ и ключ с автоинкрементом. Мне нужно вставить этот идентификатор во вторую таблицу (Detail таблица)

// Some code here

transaction = con.BeginTransaction();

// NewsId is the primary key and auto-incremented. I need to retrieve 
// that value and insert it into the second table 
string query1 = "INSERT INTO ABC(NewsCode, Comment) VALUES (@NewsCode, @Comment)"; 
cmd = db.GetSqlStringCommand(query1);
cmd.Transaction = transaction;

db.AddInParameter(cmd, "NewsCode", DbType.Int32, News.NewsCode);
db.AddInParameter(cmd, "Comment", DbType.String,News.Comment);

db.ExecuteNonQuery(cmd, transaction);

foreach (var item in NewsTotal.items)
{
    // I'm going to insert into the `Detail` table and I need the 
    // previously inserted table's NewsId
    string newsItemsQuery = @"INSERT INTO [dbo].[TBL_T_NewsItems] ([NewsId], [ItemId])
                              VALUES (@NewsId, @Comment)";

    // some code here
}

Ответы [ 2 ]

0 голосов
/ 18 января 2019

ОК, это то, что вы можете сделать

foreach (var item in NewsTotal.items) { 
string newsItemsQuery = @"INSERT INTO [dbo].[TBL_T_NewsItems] ([NewsId],[ItemId]) SELECT NewsId, ItemId FROM ABC"; 
 }
0 голосов
/ 18 января 2019

Пожалуйста, проверьте мой ответ ниже

transaction = con.BeginTransaction();
string query1 ="Insert Into ABC(NewsCode,Comment) output INSERTED.ID Values (@NewsCode,@Comment)"; 
cmd = db.GetSqlStringCommand(query1);
cmd.Transaction = transaction;
cmd.Connection = con;

db.AddInParameter(cmd, "NewsCode", DbType.Int32, News.NewsCode);
db.AddInParameter(cmd, "Comment", DbType.String,News.Comment);

int modifiedRowId =(int)cmd.ExecuteScalar();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...