?

Log in

No account? Create an account
 
 
28 Октябрь 2009 @ 21:11
Странная проблема с foreign keys в реляционных СУБД  
Есть у нас такая странная проблема - периодически у кого-то из клиентов начинает валиться TrackStudio.  Присылают анонимный бекап - у базы нарушена ссылочная целостность.

Такое происходит из-за того, что при необходимости удалить что-то TrackStudio не пытается отслеживать связи между данными, а просто удаляет. Если удалилось - значит ссылок на объект нет и все нормально. Но почему-то иногда СУБД позволяет удалять данные, на которые ссылаются foreign keys. Когда-то давно видели эту проблему только на MS SQL Server 2000 без SP4, думали локальный глюк. Но за последние годы видели такое и на MySQL, и на DB2, и на SQL Server 2005.

Вопрос - что это может быть ? Как вообще может быть, что foreign key есть, а данные удаляются ? Может ли пользователь как-то случайно отключить проверку foreign keys ? Можно ли обойти проверку foreign keys ? Приветствуются любые идеи.
 
 
 
Максим Крамаренкоmaximkr on Октябрь, 28, 2009 20:17 (UTC)
Еще не видели под PostgreSQL и HSQLDB.
alxt.moikrug.ru on Октябрь, 29, 2009 04:22 (UTC)
А interbase/firebird? У него тоже таких глюков вроде нет.
Не скажу за DB/2 (живьём не видел не только её, но и тех, кто её видел), а вот MSSQL и MySQL - глюкодром ещё тот...
Максим Крамаренкоmaximkr on Октябрь, 29, 2009 07:12 (UTC)
На Firebird тоже не видели. Но в данном случае это вряд ли показатель - я не очень верю в одну и ту же багу на 3-х СУБД. Возможно, большая часть случаев на MS SQL Server/MySQL просто потому, что они довольно популярны, а баг у нас.