1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-29 22:27:42 +02:00

SQL: Добавление и удаление колонок таблиц

This commit is contained in:
Anton Titovets
2025-06-09 16:32:56 +03:00
parent 687a2dd281
commit 75c0911dca
6 changed files with 360 additions and 0 deletions

View File

@@ -284,6 +284,43 @@
КонецФункции КонецФункции
// Добавить колонку таблицы
// Добавляет новую колонку в существующую таблицу
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Имя - Строка - Имя колонки - name
// ТипДанных - Строка - Тип данных колонки - type
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения запроса
Функция ДобавитьКолонкуТаблицы(Знач Таблица, Знач Имя, Знач ТипДанных, Знач Соединение = "", Знач Tls = "") Экспорт
Результат = OPI_ЗапросыSQL.ДобавитьКолонкуТаблицы(OPI_MySQL, Таблица, Имя, ТипДанных, Соединение, Tls);
Возврат Результат;
КонецФункции
// Удалить колонку таблицы
// Удаляет колонку из таблицы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Имя - Строка - Имя колонки - name
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения запроса
Функция УдалитьКолонкуТаблицы(Знач Таблица, Знач Имя, Знач Соединение = "", Знач Tls = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьКолонкуТаблицы(OPI_MySQL, Таблица, Имя, Соединение, Tls);
Возврат Результат;
КонецФункции
// Очистить таблицу // Очистить таблицу
// Очищает таблицу базы // Очищает таблицу базы
// //

View File

@@ -327,6 +327,43 @@
КонецФункции КонецФункции
// Добавить колонку таблицы
// Добавляет новую колонку в существующую таблицу
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Имя - Строка - Имя колонки - name
// ТипДанных - Строка - Тип данных колонки - type
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения запроса
Функция ДобавитьКолонкуТаблицы(Знач Таблица, Знач Имя, Знач ТипДанных, Знач Соединение = "", Знач Tls = "") Экспорт
Результат = OPI_ЗапросыSQL.ДобавитьКолонкуТаблицы(OPI_PostgreSQL, Таблица, Имя, ТипДанных, Соединение, Tls);
Возврат Результат;
КонецФункции
// Удалить колонку таблицы
// Удаляет колонку из таблицы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Имя - Строка - Имя колонки - name
// Соединение - Строка, Произвольный - Соединение или строка подключения - dbc
// Tls - Структура Из КлючИЗначение - Настройки TLS, если необходимо. См. ПолучитьНастройкиTls - tls
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения запроса
Функция УдалитьКолонкуТаблицы(Знач Таблица, Знач Имя, Знач Соединение = "", Знач Tls = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьКолонкуТаблицы(OPI_PostgreSQL, Таблица, Имя, Соединение, Tls);
Возврат Результат;
КонецФункции
// Очистить таблицу // Очистить таблицу
// Очищает таблицу базы // Очищает таблицу базы
// //

View File

@@ -257,6 +257,41 @@
КонецФункции КонецФункции
// Добавить колонку таблицы
// Добавляет новую колонку в существующую таблицу
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Имя - Строка - Имя колонки - name
// ТипДанных - Строка - Тип данных колонки - type
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения запроса
Функция ДобавитьКолонкуТаблицы(Знач Таблица, Знач Имя, Знач ТипДанных, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.ДобавитьКолонкуТаблицы(OPI_SQLite, Таблица, Имя, ТипДанных, Соединение);
Возврат Результат;
КонецФункции
// Удалить колонку таблицы
// Удаляет колонку из таблицы
//
// Параметры:
// Таблица - Строка - Имя таблицы - table
// Имя - Строка - Имя колонки - name
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
//
// Возвращаемое значение:
// Соответствие Из КлючИЗначение - Результат выполнения запроса
Функция УдалитьКолонкуТаблицы(Знач Таблица, Знач Имя, Знач Соединение = "") Экспорт
Результат = OPI_ЗапросыSQL.УдалитьКолонкуТаблицы(OPI_SQLite, Таблица, Имя, Соединение);
Возврат Результат;
КонецФункции
// Добавить записи // Добавить записи
// Добавляет записи в таблицу // Добавляет записи в таблицу
// //

View File

@@ -95,6 +95,45 @@
КонецФункции КонецФункции
Функция ДобавитьКолонкуТаблицы(Знач Модуль
, Знач Таблица
, Знач Имя
, Знач ТипДанных
, Знач Соединение = ""
, Знач Tls = Неопределено) Экспорт
Схема = ПустаяСхемаSQL("ALTERTABLEADD", Модуль);
УстановитьИмяТаблицы(Схема, Таблица);
УстановитьПроизвольноеПоле(Схема, "name" , Имя , "Строка");
УстановитьПроизвольноеПоле(Схема, "dtype", ТипДанных, "Строка");
Запрос = СформироватьТекстSQL(Схема);
Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls);
Возврат Результат;
КонецФункции
Функция УдалитьКолонкуТаблицы(Знач Модуль
, Знач Таблица
, Знач Имя
, Знач Соединение = ""
, Знач Tls = Неопределено) Экспорт
Схема = ПустаяСхемаSQL("ALTERTABLEDROP", Модуль);
УстановитьИмяТаблицы(Схема, Таблица);
УстановитьПроизвольноеПоле(Схема, "name", Имя, "Строка");
Запрос = СформироватьТекстSQL(Схема);
Результат = ВыполнитьЗапросSQL(Модуль, Запрос, , , Соединение, Tls);
Возврат Результат;
КонецФункции
Функция ДобавитьЗаписи(Знач Модуль Функция ДобавитьЗаписи(Знач Модуль
, Знач Таблица , Знач Таблица
, Знач МассивДанных , Знач МассивДанных
@@ -303,6 +342,14 @@
ИначеЕсли Действие = "TABLESCHEMA" Тогда ИначеЕсли Действие = "TABLESCHEMA" Тогда
Схема = ПустаяСхемаTableSchema(); Схема = ПустаяСхемаTableSchema();
ИначеЕсли Действие = "ALTERTABLEADD" Тогда
Схема = ПустаяСхемAlterTableAdd();
ИначеЕсли Действие = "ALTERTABLEDROP" Тогда
Схема = ПустаяСхемAlterTableDrop();
Иначе Иначе
@@ -435,6 +482,29 @@
КонецФункции КонецФункции
Функция ПустаяСхемAlterTableAdd()
Схема = Новый Структура("type", "ALTERTABLEADD");
Схема.Вставить("table", "");
Схема.Вставить("name" , "");
Схема.Вставить("dtype", "");
Возврат Схема;
КонецФункции
Функция ПустаяСхемAlterTableDrop()
Схема = Новый Структура("type", "ALTERTABLEDROP");
Схема.Вставить("table", "");
Схема.Вставить("name" , "");
Возврат Схема;
КонецФункции
#КонецОбласти #КонецОбласти
#Область Процессоры #Область Процессоры
@@ -491,6 +561,14 @@
ИначеЕсли ТипСхемы = "TABLESCHEMA" Тогда ИначеЕсли ТипСхемы = "TABLESCHEMA" Тогда
ТекстЗапроса = СформироватьТекстTableSchema(Схема); ТекстЗапроса = СформироватьТекстTableSchema(Схема);
ИначеЕсли ТипСхемы = "ALTERTABLEADD" Тогда
ТекстЗапроса = СформироватьТекстAlterTableAdd(Схема);
ИначеЕсли ТипСхемы = "ALTERTABLEDROP" Тогда
ТекстЗапроса = СформироватьТекстAlterTableDrop(Схема);
Иначе Иначе
@@ -714,6 +792,33 @@
КонецФункции КонецФункции
Функция СформироватьТекстAlterTableAdd(Знач Схема)
Таблица = Схема["table"];
Имя = Схема["name"];
ТипДанных = Схема["dtype"];
ШаблонSQL = "ALTER TABLE %1 ADD %2 %3";
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, Имя, ТипДанных);
Возврат ТекстSQL;
КонецФункции
Функция СформироватьТекстAlterTableDrop(Знач Схема)
Таблица = Схема["table"];
Имя = Схема["name"];
ШаблонSQL = "ALTER TABLE %1 DROP %2";
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, Имя);
Возврат ТекстSQL;
КонецФункции
#КонецОбласти #КонецОбласти
#Область Вспомогательные #Область Вспомогательные

View File

@@ -2316,6 +2316,8 @@
SQLite_ОбновитьЗаписи(ПараметрыТеста); SQLite_ОбновитьЗаписи(ПараметрыТеста);
SQLite_УдалитьЗаписи(ПараметрыТеста); SQLite_УдалитьЗаписи(ПараметрыТеста);
SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста);
SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста);
SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста);
SQLite_ОчиститьТаблицу(ПараметрыТеста); SQLite_ОчиститьТаблицу(ПараметрыТеста);
SQLite_УдалитьТаблицу(ПараметрыТеста); SQLite_УдалитьТаблицу(ПараметрыТеста);
SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
@@ -2329,6 +2331,8 @@
SQLite_ОбновитьЗаписи(ПараметрыТеста); SQLite_ОбновитьЗаписи(ПараметрыТеста);
SQLite_УдалитьЗаписи(ПараметрыТеста); SQLite_УдалитьЗаписи(ПараметрыТеста);
SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста);
SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста);
SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста);
SQLite_ОчиститьТаблицу(ПараметрыТеста); SQLite_ОчиститьТаблицу(ПараметрыТеста);
SQLite_УдалитьТаблицу(ПараметрыТеста); SQLite_УдалитьТаблицу(ПараметрыТеста);
SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
@@ -17882,6 +17886,68 @@
КонецПроцедуры КонецПроцедуры
Процедура SQLite_ДобавитьКолонкуТаблицы(ПараметрыФункции)
База = ПараметрыФункции["SQLite_DB"];
Таблица = "test";
Имя = "new_col";
ТипДанных = "TEXT";
Результат = OPI_SQLite.ДобавитьКолонкуТаблицы(Таблица, Имя, ТипДанных, База);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьКолонкуТаблицы", "SQLite");
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
Результат = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ДобавитьКолонкуТаблицы (проверка)", "SQLite");
Найдена = Ложь;
Для Каждого Колонка Из Результат["data"] Цикл
Если Колонка["name"] = Имя Тогда
OPI_ПолучениеДанныхТестов.Проверка_Равенство(ТипДанных, Колонка["type"]);
Найдена = Истина;
КонецЕсли;
КонецЦикла;
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Найдена, Истина);
КонецПроцедуры
Процедура SQLite_УдалитьКолонкуТаблицы(ПараметрыФункции)
База = ПараметрыФункции["SQLite_DB"];
Таблица = "test";
Имя = "new_col";
Результат = OPI_SQLite.УдалитьКолонкуТаблицы(Таблица, Имя, База);
// END
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКолонкуТаблицы", "SQLite");
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
Результат = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьКолонкуТаблицы (проверка)", "SQLite");
Найдена = Ложь;
Для Каждого Колонка Из Результат["data"] Цикл
Если Колонка["name"] = Имя Тогда
Найдена = Истина;
КонецЕсли;
КонецЦикла;
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Найдена, Ложь);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область PostgreSQL #Область PostgreSQL

View File

@@ -2295,6 +2295,8 @@
CLI_SQLite_ОбновитьЗаписи(ПараметрыТеста); CLI_SQLite_ОбновитьЗаписи(ПараметрыТеста);
CLI_SQLite_УдалитьЗаписи(ПараметрыТеста); CLI_SQLite_УдалитьЗаписи(ПараметрыТеста);
CLI_SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста); CLI_SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста);
CLI_SQLite_ДобавитьКолонкуТаблицы(ПараметрыТеста);
CLI_SQLite_УдалитьКолонкуТаблицы(ПараметрыТеста);
CLI_SQLite_ОчиститьТаблицу(ПараметрыТеста); CLI_SQLite_ОчиститьТаблицу(ПараметрыТеста);
CLI_SQLite_УдалитьТаблицу(ПараметрыТеста); CLI_SQLite_УдалитьТаблицу(ПараметрыТеста);
CLI_SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста); CLI_SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
@@ -19820,6 +19822,84 @@
КонецПроцедуры КонецПроцедуры
Процедура CLI_SQLite_ДобавитьКолонкуТаблицы(ПараметрыФункции)
База = ПараметрыФункции["SQLite_DB"];
Таблица = "test";
Имя = "new_col";
ТипДанных = "TEXT";
Опции = Новый Структура;
Опции.Вставить("table", Таблица);
Опции.Вставить("name" , Имя);
Опции.Вставить("type" , ТипДанных);
Опции.Вставить("db" , База);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ДобавитьКолонкуТаблицы", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКолонкуТаблицы", "SQLite");
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
Опции = Новый Структура;
Опции.Вставить("table", Таблица);
Опции.Вставить("db" , База);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "ДобавитьКолонкуТаблицы (проверка)", "SQLite");
Найдена = Ложь;
Для Каждого Колонка Из Результат["data"] Цикл
Если Колонка["name"] = Имя Тогда
OPI_ПолучениеДанныхТестов.Проверка_Равенство(ТипДанных, Колонка["type"]);
Найдена = Истина;
КонецЕсли;
КонецЦикла;
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Найдена, Истина);
КонецПроцедуры
Процедура CLI_SQLite_УдалитьКолонкуТаблицы(ПараметрыФункции)
База = ПараметрыФункции["SQLite_DB"];
Таблица = "test";
Имя = "new_col";
Опции = Новый Структура;
Опции.Вставить("table", Таблица);
Опции.Вставить("name" , Имя);
Опции.Вставить("db" , База);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "УдалитьКолонкуТаблицы", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКолонкуТаблицы", "SQLite");
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
Опции = Новый Структура;
Опции.Вставить("table", Таблица);
Опции.Вставить("db" , База);
Результат = OPI_ПолучениеДанныхТестов.ВыполнитьТестCLI("sqlite", "ПолучитьИнформациюОТаблице", Опции);
OPI_ПолучениеДанныхТестов.ЗаписатьЛогCLI(Результат, "УдалитьКолонкуТаблицы (проверка)", "SQLite");
Найдена = Ложь;
Для Каждого Колонка Из Результат["data"] Цикл
Если Колонка["name"] = Имя Тогда
Найдена = Истина;
КонецЕсли;
КонецЦикла;
OPI_ПолучениеДанныхТестов.Проверка_Равенство(Найдена, Ложь);
КонецПроцедуры
#КонецОбласти #КонецОбласти
#Область PostgreSQL #Область PostgreSQL