В SQL Server 2022 INSERT INTO ... OUTPUT.Inserted.* VALUES ... может получить вставленные элементы. Затем оператор может вставлять данные в одну или две таблицы (с одинаковой структурой таблицы).
Можно ли вставлять данные в несколько таблиц с разной структурой таблиц?
CREATE TABLE tb_Master
(
Id INT IDENTITY(1,1) PRIMARY KEY,
[Master] VARCHAR(50)
)
CREATE TABLE tb_Slave
(
Id INT IDENTITY(1,1) PRIMARY KEY,
ParentId INT NOT NULL, --tb_Master.Id
[Slave] VARCHAR(50)
)
Модели сущностей C#:
internal class MasterMdl
{
public int Id { get; set; }
public string Master { get; set; }
public IEnumerable Slaves { get; set; }
}
internal class SlaveMdl
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Slave { get; set; }
}
В C# создайте данные для вставки:
var list = new List();
for (int i = 0; i < 10; i++)
{
var m = new MasterMdl()
{
Master = $"Master {i}",
};
SlaveMdl[] slaves = new SlaveMdl[5];
for (int j = 0; j < 5; j++)
{
slaves[j] = new SlaveMdl()
{
Slave = $"Slave {j}"
};
}
m.Slaves = slaves;
list.Add(m);
}
Обновление: мой пример кода C#
using var masterCmd = await _dbConnectionContext.CreateCommand(mastSQL, masterParameterItems, token, false);
var reader = await masterCmd.ExecuteReaderAsync(token);
var allSlaves = new List();
var handler = statement.Context.GetSlaveHandler;
var parentId = statement.Context.ParentId;
await reader.ReadAsync(token);
foreach (var data in userData)
{
var slaves = handler.Invoke(data);
var id = reader[0];
foreach (var slave in slaves)
{
(parentId as IPropertyValue).SetValue(slave, id);
}
allSlaves.AddRange(slaves);
await reader.ReadAsync(token);
}
reader.Close();
using var slaveCmd = await _dbConnectionContext.CreateCommand(slaveSQL, slaveParameterItems, token, false);
var ret = await slaveCmd.ExecuteNonQueryAsync(token);
await _dbConnectionContext.Commit(token);
Вставка нескольких значений в несколько таблиц SQL Server
https://www.geeksforgeeks.org/insert-mu ... s-using-a- один оператор в sql-сервере/
CREATE TABLE GeekTable1 (
Id1 INT,
Name1 VARCHAR(200),
City1 VARCHAR(200)
);
CREATE TABLE GeekTable2 (
Id2 INT,
Name2 VARCHAR(200),
City2 VARCHAR(200)
);
INSERT INTO GeekTable1 (Id1, Name1, City1)
OUTPUT inserted.Id1, inserted.Name1, inserted.City1
INTO GeekTable2
VALUES (1, 'Komal', 'Delhi'),
(2, 'Khushi', 'Noida');
SELECT * FROM GeekTable1;
GO
SELECT * FROM GeekTable2;
GO
Подробнее здесь: https://stackoverflow.com/questions/792 ... -same-time
Добавить данные главного подчиненного устройства одновременно ⇐ C#
Место общения программистов C#
-
Anonymous
1734362666
Anonymous
В SQL Server 2022 INSERT INTO ... OUTPUT.Inserted.* VALUES ... может получить вставленные элементы. Затем оператор может вставлять данные в одну или две таблицы (с одинаковой структурой таблицы).
Можно ли вставлять данные в несколько таблиц с разной структурой таблиц?
CREATE TABLE tb_Master
(
Id INT IDENTITY(1,1) PRIMARY KEY,
[Master] VARCHAR(50)
)
CREATE TABLE tb_Slave
(
Id INT IDENTITY(1,1) PRIMARY KEY,
ParentId INT NOT NULL, --tb_Master.Id
[Slave] VARCHAR(50)
)
Модели сущностей C#:
internal class MasterMdl
{
public int Id { get; set; }
public string Master { get; set; }
public IEnumerable Slaves { get; set; }
}
internal class SlaveMdl
{
public int Id { get; set; }
public int ParentId { get; set; }
public string Slave { get; set; }
}
В C# создайте данные для вставки:
var list = new List();
for (int i = 0; i < 10; i++)
{
var m = new MasterMdl()
{
Master = $"Master {i}",
};
SlaveMdl[] slaves = new SlaveMdl[5];
for (int j = 0; j < 5; j++)
{
slaves[j] = new SlaveMdl()
{
Slave = $"Slave {j}"
};
}
m.Slaves = slaves;
list.Add(m);
}
Обновление: мой пример кода C#
using var masterCmd = await _dbConnectionContext.CreateCommand(mastSQL, masterParameterItems, token, false);
var reader = await masterCmd.ExecuteReaderAsync(token);
var allSlaves = new List();
var handler = statement.Context.GetSlaveHandler;
var parentId = statement.Context.ParentId;
await reader.ReadAsync(token);
foreach (var data in userData)
{
var slaves = handler.Invoke(data);
var id = reader[0];
foreach (var slave in slaves)
{
(parentId as IPropertyValue).SetValue(slave, id);
}
allSlaves.AddRange(slaves);
await reader.ReadAsync(token);
}
reader.Close();
using var slaveCmd = await _dbConnectionContext.CreateCommand(slaveSQL, slaveParameterItems, token, false);
var ret = await slaveCmd.ExecuteNonQueryAsync(token);
await _dbConnectionContext.Commit(token);
Вставка нескольких значений в несколько таблиц SQL Server
https://www.geeksforgeeks.org/insert-multiple-values-into-multiple-tables-using-a- один оператор в sql-сервере/
CREATE TABLE GeekTable1 (
Id1 INT,
Name1 VARCHAR(200),
City1 VARCHAR(200)
);
CREATE TABLE GeekTable2 (
Id2 INT,
Name2 VARCHAR(200),
City2 VARCHAR(200)
);
INSERT INTO GeekTable1 (Id1, Name1, City1)
OUTPUT inserted.Id1, inserted.Name1, inserted.City1
INTO GeekTable2
VALUES (1, 'Komal', 'Delhi'),
(2, 'Khushi', 'Noida');
SELECT * FROM GeekTable1;
GO
SELECT * FROM GeekTable2;
GO
Подробнее здесь: [url]https://stackoverflow.com/questions/79283560/add-master-slave-data-at-same-time[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия