![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поддержка ссылочной целосности [MSSQL2000]
Term © (2004-09-29 12:09:00)Как лучше сделать контроль ссылочной целостности
с помошью тригеров или
внешних ключей, почему спрашиваю тут мне сказали что задание RELATIONSHIPS типа не столь надёжно
вот и вкрались сомнения
KSergey (2004-09-29 15:48:00) [41]> А вот работа внешних ключей оптимизирована очень неплохо.
Применительно к MS SQL основная фраза. И пусть эти интербейзники не выпендриваются ;)) (шутка, если кто не понял)
АлексейК (2004-09-29 14:50:00) [42]В IB реализация триггеров другая (и на мой взгляд более удачная, с точки зрения программирования). В MSSQL нет триггеров ни after ни before. Триггеры в MS SQL Server срабатывают после обновления и один раз на оператор (а не на каждую обновленную запись). В триггере доступна обновленная таблица и две виртуальных таблицы Inserted и Deleted. Так что для доступа к записи я должен обратится к Inserted или Deleted. Правда в MSSQL2000 появился INSTEAD OF. А вот работа внешних ключей оптимизирована очень неплохо.
Johnmen (2004-09-29 14:32:00) [43]>АлексейК (29.09.04 14:21) [9]
>Все таки заметно.
А я не замечаю - IB/FB. Но давно уверен, что у MSSQL много смешных проблем...:)
den_777 (2004-09-29 14:28:00) [44]
> Существует мнение, что поддержка триргерами более медленная
> (по идее так и есть, к сожалению, сам не проверял),
Проверял на СУБД INFORMIX, на большой базе при удалении большого числа записей.При времении удалении в 20 минут разница была в пару секунд, что наверняка можно списать на погрешность. Так что время должно быть одинаково так как в "нормальных" СУБД констрейнт это и есть системный триггер. Но как я уже писал у MSSQL совсем не похожая на другие СУБД реализация триггеров, так что для достоверности необходимо просто проэкспериментировать именно на MSSQL2000.
АлексейК (2004-09-29 14:21:00) [45]Johnmen © (29.09.04 14:09) [6]
>АлексейК (29.09.04 13:51) [5]
Меньше. Но не значительно, это не разы и даже не десятки процентов...
:)
Все таки заметно. И потом еще что в триггере напишешь, а то и десятки "разов" могут получится.
sniknik (2004-09-29 14:19:00) [46]> потому что они не пишутся программистом.
;о)) а кем же они пишутся? наверное домохозяйками? ;о))
программистами они и пишутся, не прикладниками только, а теми кто ядро/обработку их писал.
p.s. не удержался ;), в принципе то ясно что хотел сказать.
Sergey13 (2004-09-29 14:13:00) [47]Плюсы констрейнтов - они надежнее, потому что они не пишутся программистом. Минусы - не всегда хватает гибкости, ибо жизнь бывает сложнее.
Johnmen (2004-09-29 14:09:00) [48]>АлексейК (29.09.04 13:51) [5]
Меньше. Но не значительно, это не разы и даже не десятки процентов...
:)
АлексейК (2004-09-29 13:51:00) [49]>Johnmen © (29.09.04 12:35) [4]
Значительно меньше.
Johnmen (2004-09-29 12:35:00) [50]>АлексейК (29.09.04 12:33) [3]
А по твоему, как реализованы внешние ключи ?
И ты думаешь, они дополнительно не "нагружают" сервер ?
АлексейК (2004-09-29 12:33:00) [51]Триггеры и внешние ключи разные понятия, не стоит их смешивать в кучу. И естественно что тригеры дадут дополнительную нагрузку на сервер. И если есть возможность где-то обойтись без, то это может заметно повысить производительность системы.
Nikolay M. (2004-09-29 12:16:00) [52]
> тут мне сказали что задание RELATIONSHIPS типа не столь
> надёжно
Бред какой-то.
Существует мнение, что поддержка триргерами более медленная (по идее так и есть, к сожалению, сам не проверял), но она же и более гибкая. Я лично генерю структуры базы CASE-ами, там все сводится к галочке, чем поддерживать целостность. Зато при необходимости можно дописать текст триггера на более сложную логику удаления + при желании вести логи событий.
Johnmen (2004-09-29 12:12:00) [53]>тут мне сказали
Аргументы были или просто трепались ?