Цитата:
Сообщение от
Gustav
Код:
CREATE TABLE RECIDHOLES
(
FROMRECID NUMBER(10),
TORECID NUMBER(10)
)
..
Код:
CREATE OR REPLACE TRIGGER SystemSequences_TBU
BEFORE UPDATE
ON SYSTEMSEQUENCES REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
WHEN (
SUBSTR(NLS_LOWER(Old.DataAreaId),1,3) = 'ppp'
AND Old.Id = -1
AND Old.TabId = 0
)
А если компаний более одной?
Код:
while select common
where common.RecId >= 800000001 && common.RecId <= 900000000
{
row++;
rst.AddNew();
fld = flds.Item('TblId' ); fld.Value(tableId);
fld = flds.Item('DataAreaId'); fld.Value(common.dataAreaId);
fld = flds.Item('RecId' ); fld.Value(common.RecId);
rst.Update();
}
А сколько времени нужно чтобы отработал этот код в компании с числом записей в несколько сотен миллионов? А триггер проверялся для случая с несколькими активными "писателями" (толстыми клиентами и AOS-ами) в SystemSequences ? Я конечно предвижу ответ что и диапазоны можно в разрезе компаний хранить и триггер переписать, но что-то вся обвязка становится слишком похожей на самолет-этажерку. Не проще вправить мозг стандартному "дефрагментатору" и успокоиться еще на пару лет?
P.S. Особенно если в простых случаях (нет виртуальных компаний и правильное наследование типов для ссылок по RecId) все и так само собой работает