Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
ВнизКак удалить все индексы в базе Firebird? Найти похожие ветки
← →
Карелин Артем © (2005-02-11 08:23) [0]Названия таблиц и индексов заранее неизвестны.
← →
P.N.P. © (2005-02-11 08:41) [1]Есть такая системная таблица RDB$INDICES,
так вот, имена индексов можно взять оттуда -
поле RDB$INDEX_NAME
← →
Карелин Артем © (2005-02-11 08:56) [2]Точно! Спасибо.
← →
Sergey13 © (2005-02-11 09:14) [3]Дык наверное еще и констрейнты надо грохать.
← →
Карелин Артем © (2005-02-11 09:58) [4]
> Sergey13 © (11.02.05 09:14) [3]
> Дык наверное еще и констрейнты надо грохать.
Не, этого в базе нет.
← →
Sergey13 © (2005-02-11 10:02) [5]2[4] Карелин Артем © (11.02.05 09:58)
> Не, этого в базе нет.
Ни одного PK/FK?
← →
Карелин Артем © (2005-02-11 10:07) [6]Sergey13 © (11.02.05 10:02) [5]
Нет. В данном случае это может нарушить работу работающих с базой программ. Ссылочная целостность определена на уровне триггеров и логики приложения.
← →
Johnmen © (2005-02-11 10:14) [7]Я чего-то не понял...
Ведь так же - получили список индексов, а потом стандартно дропаем их по списку...:)
← →
Danilka © (2005-02-11 10:16) [8][6] Карелин Артем © (11.02.05 10:07)
Обсуждалось здесь недавно, что лучше, стандартный вариант, или в триггерах, было высказано много мнений не в пользу триггеров, например то, что триггер работает в рамках транзакции и невидит того, что твориться за ее пределами, а штатные средства работают вне транзакции. Так что, имеешь потенциальную проблему.
← →
Карелин Артем © (2005-02-11 10:16) [9]Johnmen © (11.02.05 10:14) [7]
Ответ уже получен, идут небольшие разъяснения и уточнения.
← →
Johnmen © (2005-02-11 10:17) [10]>Danilka © (11.02.05 10:16) [8]
>а штатные средства работают вне транзакции.
Хм... Это какие ?
← →
Карелин Артем © (2005-02-11 10:23) [11]Danilka © (11.02.05 10:16) [8]
Это верно, но тут такая штука...
Репликация данных идет самописная и в процессе передачи новых FK может помешать процессу.
Толку от PK не вижу. Обхожусь уникальными индексами. Каскадных действий без явной команды мне не надо.
← →
Danilka © (2005-02-11 10:51) [12][10] Johnmen © (11.02.05 10:17)
> Хм... Это какие ?
те-же самые PK,FK например.
Открываем транзакцию 1, открываем транзакцию 2, вставляем в 2 запись с новым ключем, закрываем транзакцию 2.
из 1 в триггере эта запись не будет видна.
← →
Johnmen © (2005-02-11 10:57) [13]>Danilka © (11.02.05 10:51) [12]
Почему не будет видна ?
← →
ЮЮ © (2005-02-11 11:29) [14]>Danilka © (11.02.05 10:51) [12]
А какое дело триггеру до других записей этой таблицы? Его дело работать именно с текущей, ИМХО.
← →
Danilka © (2005-02-11 11:46) [15][13] Johnmen © (11.02.05 10:57)
потому что вторая стартовала раньше первой.
[14] ЮЮ © (11.02.05 11:29)
хорошо, другой пример, есть две таблицы, мастер-детайл, в датайле соответственно прописывается ИД мастера, FK в базе нет.
стартовали одну транзакцию, в которой добавляется в детайл запись, а после старта первой, но до ее завершения, стартует вторая, удаляет мастер и завершается.
ссылочночть проверяется в триггере, однако триггер не вернет ошибки, т.к. для него запись в мастере еще существует.
Разве не так?
← →
Johnmen © (2005-02-11 11:53) [16]>Danilka © (11.02.05 11:46) [15]
>потому что вторая стартовала раньше первой.
Ну если первая снапшот, то да. А если рид_коммитед - ню-ню, как здесь некоторые говорят...:)
← →
Danilka © (2005-02-11 12:03) [17][16] Johnmen © (11.02.05 11:53)
Чего ты придираешься, в ветке "Ограничения реализованные в триггерах (чисто теоретически)", в которой обсуждается этот вопрос:
http://delphimaster.net/view/3-1106254535/
первый и последний пост твой. :))
← →
Danilka © (2005-02-11 12:07) [18][16] Johnmen © (11.02.05 11:53)
Просто лень было ее искать, но помню, что ты там тоже участвовал.
← →
Johnmen © (2005-02-11 12:11) [19]>Danilka © (11.02.05 12:03) [17]
Да не придираюсь я ни к чему...
kaif всё сказал, всё правильно, и то же самое объясняли на sql.ru
Может тебя смутил нечётко указанный момент, что делается предположение, что тр-ии ещё не завершены...
А вообще, мы о чём ? Я уже потерял нить...:)
← →
Danilka © (2005-02-11 12:18) [20][19] Johnmen © (11.02.05 12:11)
> Может тебя смутил нечётко указанный момент, что делается
> предположение, что тр-ии ещё не завершены...
Угу, просто та ветка довольно старая, расписать также красиво как у kaif-а по памяти не получилось, тем более что боюсь я транзакции пишушие держать долго открытыми, вот и закрыл в своем примере вторую раньше времени. :)
> А вообще, мы о чём ? Я уже потерял нить...:)
Так, оффтопика немного. :))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.03.13;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.038 c