|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Fedor 'Cruger' Tersin 2:5020/400 31 May 2001 17:43:38 To : Sergey Practh Subject : Hа: Informix ? -------------------------------------------------------------------------------- Hail. Thu May 31 2001 16:10, Sergey Practh wrote to All: SP> Записи блокируются транзакцией, а к моменту выполнения триггера, она SP> уже давным-давно существет, даже если ты ее не объявлял. Любой отдельно SP> взятый DML-оператор выполняется в рамках транзакции, поэтому если ты в SP> триггере модифицируешь записи, которые обрабатывались эитм оператором, то SP> ничего лишнего ты залочить не можешь. Тем не менее, на MSSQL получается так: когда приходит update, сервер блокирует индекс, по которому нашел запись, саму запись и все индексы в которые входят модифицированные поля. Очевидно, что если при этом не все поля модифицировались, и есть индексы, состоящие целиком из немодифицированных полей - то эти индексы блокироваться не будут. Далее выполняется триггер, который модифицирует ранее не модифицированные поля, которые в свою очередь входят в еще незаблокированный индекс. Получается 2 этапа блокировки: перед выполнением триггера, и во время выполнения. Между этими двумя этапами может вклиниться другой клиент со своим запросом. Если бы MSSQL блокировал все ресурсы, относящиеся к изменяемой записи, было бы так, как ты говоришь. >> >> Хитрое дефаултное значение уникального индекса. Hе знаю, любые ли >> SP> А точнее, как я понял, речь идет о ПК? Так? >> В общем, да. SP> Видишь ли, для того, что бы написать такую ф-цию (которая полноценно SP> годилась бы для генерации ПК) не хватит внутреннего языка, так как есть SP> определенные ограничения. Такую функцию можно создать только на уровне SP> ядра сервера, извини, но Вас там не ждут. Приведи пример, для которого внутреннего языка не хватит (в условиях наличия пользовательских ф-ций). Кроме того, можно из пользовательской ф-ции вызвать внешнюю хранимую процедуру, а уж там развернуться. SP> Еще раз тебе объясню - нормальный генератор ПК в триггере сделать SP> нельзя, потому что требования к этой функции предъявляются немного выше, SP> чем просто к функции, которая может генерировать какие-то значения. Какие же требования предъявляются к ПК, которые нельзя реализовать? Fedor. --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/1667990808bc5.html, оценка из 5, голосов 10
|