16 июня, воскресенье 09:48
Bankir.Ru

Объявление

Свернуть
Пока нет объявлений.

Как не угробить таблицу?

Свернуть
X
  • Фильтр
  • Время
  • Показать
Очистить всё
новые сообщения

  • TimoV
    Участник создал тему Как не угробить таблицу?

    Как не угробить таблицу?

    Предположим я, как законченный молодец, сваял такой код:
    Код:
    DEF NEW GLOBAL SHARED TEMP-TABLE tmprecid NO-UNDO FIELD id AS RECID INDEX id id.
    FOR EACH tmprecid NO-LOCK, FIRST acct WHERE RECID(acct) = tmprecid.id:
      Det = 'Ну ни чего себе!'.
    END.
    И запустил его, например, из браузера счетов.
    Через 3 секунды выясняется что убиты наименования всех счетов.
    Я то, по простоте душевной, полагал что присваиваю значение переменной Det, но забыл объявить её. Progress же в этом случае считает что я хочу изменить поле Details таблицы Acct.
    Существует ли способ гарантированно застраховаться от этого?
    Понятно, что переменные надо объявлять, и присваивать им лучше имена, не пересекающиеся с Бисквитовскими.
    Но и на старуху бывает поруха.

  • simsimd
    Участник ответил
    TimoV, Существует ли способ гарантированно застраховаться от этого?
    100% гарантию может дать только страховой полис а если по существу то не забывать расставлять no-lock по максимуму. как минимум это даст сообщение об ошибке и некоторое время на анализ

    Прокомментировать:


  • Илюха
    Участник ответил
    Сообщение от TimoV Посмотреть сообщение
    Имеется в виду написать код, который бы по хистори восстановил бы наименания счетов?
    Да, да. Именно это. Парсить field-ref на токены и восстанавливать. Я ходил по этой дороге. Поскольку отчёт был редкоиспользуемый, попадались в него сведения в старых днях, и не закрытые триггером.

    Прокомментировать:


  • DWP
    Участник ответил
    Сообщение от TimoV Посмотреть сообщение
    Имеется в виду написать код, который бы по хистори восстановил бы наименания счетов?
    Или есть стандартные (готовые) средства?
    можно поступить проще, взять бакап базы, поднять ее цепочками до твоего изменения наименований. выгрузить таблицу acct,
    ну и простенький код на пять строчек импорт из файла и подстановка названия.
    но можно и через хистори восстановить, примерно одинаково по затратам времени , но первый вариант проще в понимании, ИМХО

    PS слава богу не наступал на эти грабли , но таблицу так "восстанавливал" несколько раз

    Прокомментировать:


  • TimoV
    Участник ответил
    Сообщение от Илюха Посмотреть сообщение
    В данном конкретном случае - пойти в хистори и восстановить.
    Имеется в виду написать код, который бы по хистори восстановил бы наименания счетов?
    Или есть стандартные (готовые) средства?

    Прокомментировать:


  • Илюха
    Участник ответил
    В данном конкретном случае - пойти в хистори и восстановить.

    Страховки не знаю, а сам на необъявленную переменную, которая совпала с наименованием поля таблицы, и на таблицу был спозиционирован курсор, наступал.

    Прокомментировать:

Пользователи, просматривающие эту тему

Свернуть

Присутствует 1. Участников: 0, гостей: 1.

Обработка...
X