|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Sergey Prach 2:5020/400 23 Jun 2003 23:01:56 To : Dmitry V. Liseev Subject : Re: Целостность данных. Как обеспечить? -------------------------------------------------------------------------------- Hi! "Dmitry V. Liseev" <dimik@infopro.spb.su> сообщил/сообщила в новостях следующее: news:bd7c3b$2vcf$1@news.peterlink.ru... > Вот проблемка возникла. Предположим, есть > низкоуровневая целостность данных, типа > ссылочной целостности или уникального индекса. > Ее сервер сам отслеживает, т.к. он на это рассчитан. > > Предположим есть такой констрейн: > CREATE TABLE MyTable ( > Name VARCHAR(50) NOT NULL UNIQUE > ); > > Первый юзер говорит: > INSERT INTO MyTable(Name) VALUES("Name 1") > но транзакцию пока не коммитит. > > Второй юзер говорит: > INSERT INTO MyTable(Name) VALUES("Name 1") > и вот тут сервер должен подождать, пока первый > юзер не завершит свою транзакцию (или коммит > или откат), прежде чем что-то делать дальше. Все правильно, а также несколько абзацев ниже тоже правильно мыслишь. > Простейший пример: требуется, чтобы в таблице > TABLE_A была как минимум одна запись. То есть > нужно написать триггер BEFORE DELETE, который > проверял бы количество записей, и если там всего > одна, то не удалял бы ее. А это уже нарушение нормальных форм - зависимость между записями. От которых ты должен, как черт от ладана, избавлятся. То бишь, не надо требовать от механизмов реляционных СУБД красивой реализации нереляционных условий. Хотя, к слову сказать, именно это условие довольно легко решается. > > Предположим, в таблице две записи и два пользователя > начали транзакции по удалению записей. Первый видит > две записи, поэтому удаляет одну, но транзакцию пока > не завершает. Второй тоже видит две записи и удаляет > другую. Когда оба коммитятся, не остается ни одной > записи, т.е. триггер не помог, т.к. пользователи не видят > результатов незакоммиченных транзакций. Читай/рой в сторону уровней изоляции транзакций и осенит тебя просвещение ... -- С уважением, Сергей Прач ================= Please, send you private mail to: s_pratch@mail.ru --- ifmail v.2.15dev5 * Origin: Ltawasoft (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/167866e539a2b.html, оценка из 5, голосов 10
|