14 ноября, среда 10:21
Bankir.Ru

Объявление

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

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

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

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

    Предположим я, как законченный молодец, сваял такой код:
    Код:
    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.
    Существует ли способ гарантированно застраховаться от этого?
    Понятно, что переменные надо объявлять, и присваивать им лучше имена, не пересекающиеся с Бисквитовскими.
    Но и на старуху бывает поруха.

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

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

    Комментарий


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

      Комментарий


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

        PS слава богу не наступал на эти грабли , но таблицу так "восстанавливал" несколько раз
        С уважением, Дмитрий.

        Комментарий


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

          Комментарий


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

            Комментарий

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

            Свернуть

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

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