Как обновить таблицу, одновременно используя ее? - PullRequest
1 голос
/ 25 апреля 2019

У меня есть локальная БД (я использую SQL Server Express) с именем PCNAME\SQLEXPRESS.Мне нужно загрузить данные из основной базы данных на MAINDB\HYEAH, поэтому я связал mainDB и смог вставить данные из основной БД в локальную БД с помощью хранимой процедуры.

У меня проблема в том, что я не могу найти правильный способ сделать следующее:

Я постоянно использую данные, импортированные из mainDB, эти данные находятся в таблицеCredits, я всегда консультируюсь, вставляю или обновляю запись из этой таблицы.

Но каждые 10 минут мне приходится перезагружать данные из mainDB в Credits снова, но я не могу прекратить использовать данные.Мне нужно найти способ использовать эти данные и манипулировать ими, пока они перезагружаются из mainDB.

Я не эксперт в операциях с БД или SQL, поэтому подумал над этим решением:

При первой загрузке данных из mainDB я сделаю это прямо в таблице Credits.В другой раз я буду загружать данные во временную таблицу, а когда хранимая процедура завершится, я заменю Credits данными из временной таблицы.Но я думаю, что это глупая причина, если я удалю все данные из Credits, чтобы заменить их временной таблицей, я не смогу продолжать использовать данные, поэтому я застрял.

Есть ли способкак этого добиться?

Спасибо!

1 Ответ

1 голос
/ 25 апреля 2019

Один из вариантов - использовать синонимы.

BEGIN TRY
    DROP SYNONYM working_table
END TRY
BEGIN CATCH
END CATCH

CREATE SYNONYM working_table FOR import_table_a

теперь вы можете делать выборки и обновления для working_table, и они перейдут в import_table_a. Когда вам нужно перезагрузить данные (в import_table_b), вы просто отбрасываете синоним и указываете на новую версию таблицы.

Но примите во внимание другие комментарии, которые подразумевают, что вы, возможно, решаете не ту проблему:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...