|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Sergey Practh 2:5020/400 31 May 2001 16:10:08 To : All Subject : Hа: Informix ? -------------------------------------------------------------------------------- Hi! "Fedor 'Cruger' Tersin" <cruger@galaktika.ru> сообщил/сообщила в новостях следующее: news:9f31qa$7o$281@www.fido-online.com... > SP> Читайте мать часть по deadlock-ам. К тому моменту, когда запись > SP> попадает > SP> в таблицу insert и передается выполение триггеру, она уже заблокирована > SP> самой транзакцией. Дальнейшие выводы делай сам, я тебе не бука, что бы > SP> все разжевывать. > Я и так все выводы сделал, да и указал, что запись уже заблокирована. Что тебе > не понравилось то? Записи блокируются транзакцией, а к моменту выполнения триггера, она уже давным-давно существет, даже если ты ее не объявлял. Любой отдельно взятый DML-оператор выполняется в рамках транзакции, поэтому если ты в триггере модифицируешь записи, которые обрабатывались эитм оператором, то ничего лишнего ты залочить не можешь. > > >> Хитрое дефаултное значение уникального индекса. Hе знаю, любые ли ф-ции > SP> А точнее, как я понял, речь идет о ПК? Так? > В общем, да. Видишь ли, для того, что бы написать такую ф-цию (которая полноценно годилась бы для генерации ПК) не хватит внутреннего языка, так как есть определенные ограничения. Такую функцию можно создать только на уровне ядра сервера, извини, но Вас там не ждут. > > SP> Естественно (суть проблемы и не в самом триггере и его ограничениях), > SP> так как к моенту выполнения триггера ПК уже должен быть известен. Hо даже > SP> если это не ПК, а простой уникальный индекс то он все равно не пропустит > SP> пакет пустых значений. Короче, бегом за букой и англо-русским словарем. > Конечно, он уже должен быть известен, это ежу понятно. И вот на 7ке такое > сделать нельзя, о чем я и говорю. Может быть, можно на 8ке (простейшие примеры > работают, а как навернешь - ошибки оптимизатора запроса и пр.) - через ф-ции в > дефаултных значениях. А если бы был before триггер, то ПК можно было бы > выставлять прямо в нем. Потому что проверка уникальности должна производиться > (и на том же Oracle так и есть) после выполнения этого триггера. Еще раз тебе объясню - нормальный генератор ПК в триггере сделать нельзя, потому что требования к этой функции предъявляются немного выше, чем просто к функции, которая может генерировать какие-то значения. -- С уважением, Сергей Прач ================= Please, send you private mail to: s_pratch@mail.ru --- ifmail v.2.15dev5 * Origin: Solver Ltd. site #2 (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/15014ed5e1dbe.html, оценка из 5, голосов 10
|