![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как удалить все индексы в базе Firebird? [FB 1.5]
Карелин Артем © (2005-02-11 08:23:00)Названия таблиц и индексов заранее неизвестны.
Danilka (2005-02-11 12:18:00) [1][19] Johnmen © (11.02.05 12:11)
> Может тебя смутил нечётко указанный момент, что делается
> предположение, что тр-ии ещё не завершены...
Угу, просто та ветка довольно старая, расписать также красиво как у kaif-а по памяти не получилось, тем более что боюсь я транзакции пишушие держать долго открытыми, вот и закрыл в своем примере вторую раньше времени. :)
> А вообще, мы о чём ? Я уже потерял нить...:)
Так, оффтопика немного. :))
Johnmen (2005-02-11 12:11:00) [2]>Danilka © (11.02.05 12:03) [17]
Да не придираюсь я ни к чему...
kaif всё сказал, всё правильно, и то же самое объясняли на sql.ru
Может тебя смутил нечётко указанный момент, что делается предположение, что тр-ии ещё не завершены...
А вообще, мы о чём ? Я уже потерял нить...:)
Danilka (2005-02-11 12:07:00) [3][16] Johnmen © (11.02.05 11:53)
Просто лень было ее искать, но помню, что ты там тоже участвовал.
Danilka (2005-02-11 12:03:00) [4][16] Johnmen © (11.02.05 11:53)
Чего ты придираешься, в ветке "Ограничения реализованные в триггерах (чисто теоретически)", в которой обсуждается этот вопрос:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1106254535&n=1
первый и последний пост твой. :))
Johnmen (2005-02-11 11:53:00) [5]>Danilka © (11.02.05 11:46) [15]
>потому что вторая стартовала раньше первой.
Ну если первая снапшот, то да. А если рид_коммитед - ню-ню, как здесь некоторые говорят...:)
Danilka (2005-02-11 11:46:00) [6][13] Johnmen © (11.02.05 10:57)
потому что вторая стартовала раньше первой.
[14] ЮЮ © (11.02.05 11:29)
хорошо, другой пример, есть две таблицы, мастер-детайл, в датайле соответственно прописывается ИД мастера, FK в базе нет.
стартовали одну транзакцию, в которой добавляется в детайл запись, а после старта первой, но до ее завершения, стартует вторая, удаляет мастер и завершается.
ссылочночть проверяется в триггере, однако триггер не вернет ошибки, т.к. для него запись в мастере еще существует.
Разве не так?
ЮЮ (2005-02-11 11:29:00) [7]>Danilka © (11.02.05 10:51) [12]
А какое дело триггеру до других записей этой таблицы? Его дело работать именно с текущей, ИМХО.
Johnmen (2005-02-11 10:57:00) [8]>Danilka © (11.02.05 10:51) [12]
Почему не будет видна ?
Danilka (2005-02-11 10:51:00) [9][10] Johnmen © (11.02.05 10:17)
> Хм... Это какие ?
те-же самые PK,FK например.
Открываем транзакцию 1, открываем транзакцию 2, вставляем в 2 запись с новым ключем, закрываем транзакцию 2.
из 1 в триггере эта запись не будет видна.
Карелин Артем (2005-02-11 10:23:00) [10]Danilka © (11.02.05 10:16) [8]
Это верно, но тут такая штука...
Репликация данных идет самописная и в процессе передачи новых FK может помешать процессу.
Толку от PK не вижу. Обхожусь уникальными индексами. Каскадных действий без явной команды мне не надо.
Johnmen (2005-02-11 10:17:00) [11]>Danilka © (11.02.05 10:16) [8]
>а штатные средства работают вне транзакции.
Хм... Это какие ?
Карелин Артем (2005-02-11 10:16:00) [12]Johnmen © (11.02.05 10:14) [7]
Ответ уже получен, идут небольшие разъяснения и уточнения.
Danilka (2005-02-11 10:16:00) [13][6] Карелин Артем © (11.02.05 10:07)
Обсуждалось здесь недавно, что лучше, стандартный вариант, или в триггерах, было высказано много мнений не в пользу триггеров, например то, что триггер работает в рамках транзакции и невидит того, что твориться за ее пределами, а штатные средства работают вне транзакции. Так что, имеешь потенциальную проблему.
Johnmen (2005-02-11 10:14:00) [14]Я чего-то не понял...
Ведь так же - получили список индексов, а потом стандартно дропаем их по списку...:)
Карелин Артем (2005-02-11 10:07:00) [15]Sergey13 © (11.02.05 10:02) [5]
Нет. В данном случае это может нарушить работу работающих с базой программ. Ссылочная целостность определена на уровне триггеров и логики приложения.
Sergey13 (2005-02-11 10:02:00) [16]2[4] Карелин Артем © (11.02.05 09:58)
> Не, этого в базе нет.
Ни одного PK/FK?
Карелин Артем (2005-02-11 09:58:00) [17]
> Sergey13 © (11.02.05 09:14) [3]
> Дык наверное еще и констрейнты надо грохать.
Не, этого в базе нет.
Sergey13 (2005-02-11 09:14:00) [18]Дык наверное еще и констрейнты надо грохать.
Карелин Артем (2005-02-11 08:56:00) [19]Точно! Спасибо.
P.N.P. (2005-02-11 08:41:00) [20]Есть такая системная таблица RDB$INDICES,
так вот, имена индексов можно взять оттуда -
поле RDB$INDEX_NAME