Как обновить две базы данных, если уникальный ключ основной базы данных продолжает меняться?

У меня есть две базы данных, MySQL и SQL Server. Я могу подключиться к обоим без каких-либо проблем. Моя проблема в том, что эта база данных MySQL использует идентификатор в качестве первичного ключа, но база данных SQL Server использует номер детали в качестве первичного ключа (программное обеспечение для бухгалтерского учета), но это меняется, когда клиент что-то меняет в настольном приложении.

Я хотел использовать такое утверждение Update * on Table WHERE id=PartNumber, но это не будет работать, так как номер детали изменится и больше не будет соответствовать идентификатору MySQL.

P.S. Я не могу ничего изменить в базе данных бухгалтерской программы.

П.П.С. Просто чтобы вы знали, что я могу вставлять в обе базы данных, но мне нужно обновить обе, чтобы они, так сказать, синхронизировались.

ОТРЕДАКТИРОВАНО
ОБРАЗЕЦ ДАННЫХ MySQL

ИДЕНТИФИКАТОР Тип Артикул Имя 8104 простой 100196С Штифт, фиксирующий поршень APD

ПРИМЕР ДАННЫХ MSSQL

стрпартномер strDesc стрэкстенддеск 100196С Установочный штифт 100196C APD NCS Spec Описание продукта

ОТРЕДАКТИРОВАНО
Я нашел решение проблемы.

Мне нужно было использовать LEFT JOIN и INNER JOIN в сценарии, чтобы заставить его работать. Теперь я получаю SKU, чтобы ПОКАЗАТЬ.

SELECT
   *,
   wp_postmeta1.meta_value as SKU 
FROM
   wp_posts 
   LEFT OUTER JOIN
      wp_postmeta pm 
      ON (wp_posts.ID = pm.post_id 
      AND pm.meta_key = '_thumbnail_id') 
   LEFT JOIN
      wp_postmeta wp_postmeta1 
      on wp_postmeta1.post_id = wp_posts.ID 
      and wp_postmeta1.meta_key = '_sku' 
WHERE
   wp_posts.post_type = 'product'

Надеюсь, это поможет кому-то еще

Пожалуйста, предоставьте образцы данных и желаемые результаты. Я тоже не понимаю сути вопроса. Вам не нужно одно обновление для запуска обеих баз данных, не так ли?

Gordon Linoff 10.12.2020 12:56

Рассматривали ли вы удаление/вставку (возможно, с использованием слияния) вместо обновления?

Dan Guzman 10.12.2020 12:57

Ваша ситуация не очень ясна, но предположим: пользователи меняют номер детали в бухгалтерской программе и, следовательно, первичный ключ, но только в sql-сервере. Теперь у вас есть приложение, которое управляет/получает доступ/синхронизирует обе базы данных, и вы пытаетесь не отставать? В этом случае ваша проблема заключается не в том, что MySQL использует идентификаторы как pk, а в том, что изменения pk не выполняются в обеих базах данных, поэтому вам нужно повторить их самостоятельно. Можете ли вы добавить триггеры и таблицу журнала (для регистрации изменений первичного ключа) в базу данных учета (не в программное обеспечение)? Может быть, у бухгалтерского программного обеспечения есть журнал, к которому вы можете получить доступ?

Solarflare 10.12.2020 13:20

Ожидается, что значение поля со временем изменится, тогда оно не годится в качестве первичного ключа.

Shadow 10.12.2020 15:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
68
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Есть два способа синхронизировать эти базы данных.

Во-первых, иметь неизменяемый ключ в базе данных MSSQL так же, как у вас есть первичный ключ в базе данных MySQL. Другим было бы вести журнал изменений номера детали в MSSQL, чтобы иметь возможность согласовать их с базой данных MySQL.

Есть еще третий и четвертый способ. Либо объясните пользователям, что они не могут изменить номер детали, потому что это все взорвет, либо... найдите новую работу. С технологической точки зрения нет другого способа синхронизировать эти БД.

Спасибо за совет, я искал некоторые рекомендации, и ваши самые полезные из всех. Я работаю над этим уже несколько недель, и вариант 4 показался мне хорошим вариантом. Я просто не могу поверить, что международная компания, занимающаяся программным обеспечением для бухгалтерского учета, не добавляет идентификатор в качестве первичного ключа, а затем у них есть разработчики в компании и за ее пределами почти на ежемесячной основе, поэтому никто не берет на себя ответственность за проблему, они просто продолжают передавать ее другим. новые ребята в компании. Я работаю не на них, а на их клиента, и именно здесь я начал замечать проблемы в базе данных.

Morne 14.12.2020 10:05

Другие вопросы по теме