|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Добрый день. Как отключить все ключи на таблицах (FK, PK), а после экспорта-импорта включить их? Нужно это вот для чего: Пользователь работает с программой которая использует базу Firebird. У меня есть эта-же программа с базой (только данные в ней старые). Структура моей базы поменяется (я её доработаю, добавлю таблички, индексы, ...). А теперь пользователь должен из своей базы перегрузить свои данные в мою базу (перегрузку должна делать программа). Структура таблиц на 99% остаётся старой, т.е. добавится две-три новых таблички, или какая-то табличка разобъётся на две (часть полей останется в одной, часть в другой). Таблиц в базе будет около 100-150, данных в табличках - не много, приблизительно до 10000-20000 записей. Я хотел сделать так: 1. подключиться к своей базе, отключить все ключи (FK, PK) 2. удалить "почти" все (это и есть те одинаковые на 99% таблички для обоих баз) данные (удалить строки из таблиц). 3. в цикле пробежаться по "почти" всем табличкам и скопировать строки из базы пользователя в свою базу. 4. Оставшиеся данные (таблицы у которых поменялась структура) программа перенесёт по заложенному в неё алгоритму. 5. сделать на генераторах в своей базе - те-же значения, которые у пользователя, что-бы первичные ключи дальше генерировались правильно. 6. включить все ключи (FK, PK) Пока при выключении FK индекса (ключ - это ссылка из таблички с данными, на табличку- справочник) столкнулся с ошибкой: This operation is not defined for system tables. unsuccessful metadata update. ALTER INDEX @1 failed. action cancelled by trigger (@1) to preserve data integrity. Cannot deactivate index used by an integrity constraint. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 03:07 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Vlad_567> Как отключить все ключи на таблицах (FK, PK), Vlad_567> а после экспорта-импорта включить их? Никак. Ни PK/FK, ни их индексы нельзя отключить. > Нужно это вот для чего: > А теперь пользователь должен из своей базы перегрузить > свои данные в мою базу (перегрузку должна делать программа) А почему программа и для чего это всё? Почему нельзя просто скопировать его БД (файл или бэкап) и просто все необходимые изменения сделать над копией? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 06:55 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Vlad_567, Не отключить/включить, а удалить/создать. Другого пути, похоже, нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:23 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Другой путь очень даже может существовать, если задачу хорошенько обдумать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 10:29 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Похоже автору нужен репликатор. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 11:47 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Репликатор со структурой БД не поможет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 11:58 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Да и операция у него, чую, разовая, а не регулярная. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 11:58 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамНикак. Ни PK/FK, ни их индексы нельзя отключить. отключить-то можно, но в ФБ3 этот способ скорее всего работать не будет, хотя не проверял. Собственно, сама идея отключить ПК и ФК, видимо, появилась из-за того, что автор не хочет выстраивать последовательность переноса данных. Понятно что без индексов заливка будет быстрее, но вряд-ли для автора сейчас это важный момент. Vlad_5672. удалить "почти" все (это и есть те одинаковые на 99% таблички для обоих баз) данные (удалить строки из таблиц). нафиг это надо делать, если вы можете своей базе сделать gbak -b -g -m, и получить пустой бэкап, а затем его отресторить. Будет пустая база, гораздо быстрее чем удалять записи. Другой вариант - создать пустую базу из скрипта вашей (isql -x). В общем, явно не хватает знаний об инструментарии. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:23 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
kdv> отключить-то можно Это хак. Да и разницы с удалением не будет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 12:44 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамДругой путь очень даже может существовать, если задачу хорошенько обдумать. Вот это надо высечь в камне. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 21:21 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
kdvДругой вариант - создать пустую базу из скрипта вашей (isql -x). Даже более того - сначала только той части скрипта, в которой create table, без констрайнтов и индексов. Потом заливка данных, потом оставшуюся часть скрипта. Правда, чует моя печень, потом будем объяснять почему не создаются FK :) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2017, 21:27 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
СПМ> Вот это надо высечь в камне. Отлить в граните! (с) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2017, 00:40 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Вопрос решил. Сделал так: В программе пользователь указывает файлы БД старый и новый. В новой базе удаляю все ключи (FK, UN). Из старой базы все записи копируются в новую базу, а потом все ключи восстанавливаются (создаются заново). Нужно это было вот для чего: Пользователь работает со своей базой, через какое-то время я скидываю ему новую базу, пустую, в которой появились новые таблицы, индексы. Программа все данные переносит в новую базу и пользователь работает уже с новой базой и текущими данными (это будет после доработки программы). Если изменится структура - программа при переносе данных это уже учтёт. Сделать экспорт/импорт сам я не могу, т.к. к пользователю подключиться не могу, всё общение через третьих лиц, а доработки будут еще делаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 13:26 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
Vlad_567Пользователь работает со своей базой, через какое-то время я скидываю ему новую базу, пустую, в которой появились новые таблицы, индексы. А не проще ему скинуть скрипт создания новых таблиц и индексов в старой базе? Он будет работать быстрее, чем переливка данных. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 13:42 |
|
Как отключить все ключи (FK, PK)?
|
|||
---|---|---|---|
#18+
+ за тулзу обновления. Сам так делаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.09.2017, 14:14 |
|
|
start [/forum/topic.php?fid=40&fpage=41&tid=1561403]: |
0ms |
get settings: |
12ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 159ms |
0 / 0 |