powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Взятие имени бд из поля таблицы
5 сообщений из 5, страница 1 из 1
Взятие имени бд из поля таблицы
    #39869989
annsaity
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Прошу помощи профессионалов.

Таблица:
id / field_one / field_two / field_bd_name

Есть триггер в котором прописано следующее: при изменении таблицы сравнить значения поля и если есть различия с полем таблицы другой базы данных, то обновить их.

BEGIN
UPDATE
bd_name.table_name SET field_one = NEW.field_one WHERE field_two = OLD.field_two;
END

Сейчас возникла необходимость брать bd_name с поля текущей таблицы field_bd_name, поскольку этот скрипт должен передавать значения полей в различные базы данных.

После поиска решения поняла, что можно запихнуть значение поля field_bd_name в переменную и ее потом использовать в качестве bd_name. Это делается с помощью динамического sql. Но с триггерами динамический sql не работает.

Есть ли другое решение моей задачи? Надеюсь, я доступно описала суть задачи, если нет, то опишу детальнее.
...
Рейтинг: 0 / 0
Взятие имени бд из поля таблицы
    #39870069
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Динамический DML - это зло. А также ужас и кошмар. Не сами по себе - а с точки зрения наличия соображалки у архитектора системы.

annsaityНадеюсь, я доступно описала суть задачи
Во-первых, ни хрена не понять.
Во-вторых, Вы описали не задачу, а то, как Вы её собираетесь решать.
...
Рейтинг: 0 / 0
Взятие имени бд из поля таблицы
    #39870140
annsaity
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,
В моем понимании я описала задачу:
annsaityСейчас возникла необходимость брать bd_name с поля текущей таблицы field_bd_name, поскольку этот скрипт должен передавать значения полей в различные базы данных.
а то что не понятно, то это другой вопрос))

Могу попробовать так:
Как я могу обратится в запросе к базе данных, имя которой мне нужно взять с таблицы, а именно с поля field_bd_name.

Будет отлично, если вместо bd_name каким-то образом можно подставить значение поля field_bd_name .
bd_name .table_name SET field_one = NEW.field_one WHERE field_two = OLD.field_two;
...
Рейтинг: 0 / 0
Взятие имени бд из поля таблицы
    #39870269
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
annsaityобратится в запросе к базе данных, имя которой мне нужно взять с таблицы
annsaityвместо bd_name каким-то образом можно подставить значение поля field_bd_name .
bd_name .table_name
Код: sql
1.
SET field_one = NEW.field_one WHERE field_two = OLD.field_two;

Это - ТОЛЬКО динамический SQL, который в триггер не влезает.

Альтернативно - набор запросов со всеми возможными значениями bd_name и выбор-выполнение подходящего через CASE. Конечно, при наличии такого набора.
...
Рейтинг: 0 / 0
Взятие имени бд из поля таблицы
    #39870455
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант, триггером записывать в отдельную табличку задания, а хранимкой, запускаемой из шедулера, отрабатывать их. Конечно, если только не требуется, чтоб вся эта кухня в реальном времени работала.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Взятие имени бд из поля таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]