Перейти к основному содержимому

Гарантировать записи

Добавляет записи или обновляет данные существующих при совпадении ключевых полей

Функция ГарантироватьЗаписи(Знач Таблица, Знач МассивДанных, Знач Транзакция = Истина, Знач Соединение = "", Знач Tls = "") Экспорт

ПараметрCLI опцияТипОбяз.Назначение
Таблица--tableСтрокаИмя таблицы
МассивДанных--rowsМассив Из СтруктураМассив структур данных строк: Ключ > поле, Значение > значение поля
Транзакция--trnБулевоИстина > добавление записей в транзакции с откатом при ошибке
Соединение--dbСтрока, ПроизвольныйСуществующее соединение или путь к базе
Tls--tlsСтруктура Из КлючИЗначениеНастройки TLS, если необходимо. См. ПолучитьНастройкиTls
Возвращаемое значение

Соответствие Из КлючИЗначение - Результат выполнения запроса

подсказка

В качестве ключевых выступают все UNIQUE и PRIMARY KEY поля таблицы


Пример использования для 1С:Предприятие/OneScript
Адрес = "127.0.0.1";
Логин = "bayselonarrend";
Пароль = "12we...";
База = "testbase1";

TLS = Истина;
Порт = 3306;
СтрокаПодключения = OPI_MySQL.СформироватьСтрокуПодключения(Адрес, База, Логин, Пароль, Порт);

Если TLS Тогда
НастройкиTLS = OPI_MySQL.ПолучитьНастройкиTLS(Истина);
Иначе
НастройкиTLS = Неопределено;
КонецЕсли;

Таблица = "test_merge";

МассивДанных = Новый Массив;

СтруктураСтроки1 = Новый Структура;
СтруктураСтроки1.Вставить("id" , Новый Структура("INT" , 1));
СтруктураСтроки1.Вставить("name" , Новый Структура("TEXT" , "Vitaly"));
СтруктураСтроки1.Вставить("age" , Новый Структура("INT" , 25));
СтруктураСтроки1.Вставить("salary", Новый Структура("DOUBLE", 1000.12));

СтруктураСтроки2 = Новый Структура;
СтруктураСтроки2.Вставить("id" , Новый Структура("INT" , 2));
СтруктураСтроки2.Вставить("name" , Новый Структура("TEXT" , "Lesha"));
СтруктураСтроки2.Вставить("age" , Новый Структура("INT" , 20));
СтруктураСтроки2.Вставить("salary", Новый Структура("DOUBLE", 200.20));

МассивДанных.Добавить(СтруктураСтроки1);
МассивДанных.Добавить(СтруктураСтроки2);

КлючевыеПоля = Новый Массив;
КлючевыеПоля.Добавить("id");

Результат = OPI_MySQL.ГарантироватьЗаписи(Таблица, МассивДанных, , СтрокаПодключения, НастройкиTLS);
# JSON данные также могут быть переданы как путь к файлу .json

oint mysql ГарантироватьЗаписи \
--table "test_merge" \
--rows "[{'id':{'INT':'1'},'name':{'TEXT':'Vitaly Updated'},'age':{'INT':'25'},'salary':{'DOUBLE':'1500.5'}},{'id':{'INT':'3'},'name':{'TEXT':'Anton'},'age':{'INT':'30'},'salary':{'DOUBLE':'3000'}}]" \
--db "mysql://bayselonarrend:12we3456!2154@127.0.0.1:3307/testbase1" \
--tls "{'use_tls':true,'accept_invalid_certs':true}"