MySQL Queries хранится в одной таблице для обновления значений в другой таблице

0

Я никогда не использовал хранимые процедуры или функции и только минимально используемые функции JOIN.

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

В моем TABLE постоянно добавляются новые записи, LINK обычно будет NULL, но мне нужно заполнить его на основе некоторых условий (для этого примера я упростил). Я использую PRODUCT и несколько других столбцов для определения значения LINK.

Примеры запросов:

update TABLE set LINK = 'XYZ', где PRODUCT = 'X';

update TABLE set LINK = 'A', где PRODUCT = 'A' и STYLE = 'SAMPLE';

update TABLE set LINK = 'C', где PRODUCT = 'C' и STYLE = 'SAMPLE1';

update TABLE set LINK = 'C2', где PRODUCT = 'C' и STYLE = 'SAMPLE2';

Было ли возможным решение создать вторую таблицу с: PRODUCT = 'X' = LINK = 'XYZ', могу ли я использовать JOIN для обновления моей таблицы?

Кроме того, есть ли способ автоматически запускать эти обновления по расписанию?

Заранее спасибо! Надеюсь, это имеет смысл, это мой первый пост, долгое время читатель.

Теги:
stored-procedures
join
stored-functions

1 ответ

0

Запросы расписания

  1. Создайте текстовый файл, например nightly_update.sql.
  2. Добавьте эти запросы в nightly_update.sql по nightly_update.sql. (Теперь вы можете выполнить все эти запросы с помощью команды source в MySQL: source nightly_update.sql;. Обратите внимание, что сначала вы должны use your_db_name;)
  3. В Linux используйте crontab для создания заданной по времени задачи. Задача должна состоять в следующем: выполнить сценарий оболочки в указанное время.

    emacs -nw/etc/crontab, добавьте эту строку:
    00 1 * * * root/home/my/mytable_auto_update.sh//every 1:00 am to run this script

  4. Напишите сценарий оболочки, упомянутый ранее. Вот пример того, как выполнять команды SQL в сценарии оболочки:

    mysql -u$DB_USER -h$DB_HOST -P$DB_PORT -P$DB_PASS <<\EOF//you don't need an '\' in your code use $DB_NAME; source nightly_update.sql; EOF

  5. Перезапустите crond с помощью sudo service cron restart.

Вы должны использовать определенную стратегию, чтобы избежать повторяющихся операторов SQL, например, удалить nightly_update.sql после source, а затем создать новую, когда новый запрос пришел.

Обновите таблицу с помощью json

Насколько я знаю, вы можете сделать это с помощью плагинов. И MySQL предоставляет плагин с плавающей запятой InnoDB, который предоставляет вам интерфейсы в стиле NoSQL.

Кроме того, плагин с памятью не так популярен, и это не рекомендуется. Пожалуйста, внимательно изучите руководство, если вы заинтересованы в нем.

  • 0
    Спасибо @walter. Я найду это решение для планирования своих запросов. Я ценю ваше время и вклад, помогающий мне.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню