Главная страница


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)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Целостность данных. Как обеспечить?   Dmitry V. Liseev   23 Jun 2003 21:08:09 
 Re: Целостность данных. Как обеспечить?   Sergey Prach   23 Jun 2003 23:01:56 
Архивное /su.dbms/167866e539a2b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional