×
Показано с 1 по 2 из 2
  1. #1
    Статья
    Гость

    Статья: 1С:Повторяющиеся ключи (duplicate key) и потерянные проводки


    <p >Сначала определения.</p>
    <p >Повторяющиеся ключи это значения из набора столбцов некоторой
    таблицы, которые встречаются в данной таблице более одного раза.</p>
    <p >Потерянные проводки это строки таблицы _1SENTRY или _1SOPER.</p>
    <p >Вы спросите – «Почему данные термины используются в заголовке
    темы вместе?». Потому, что часто (хотя и не всегда) потерянные проводки проявляются
    как строки с повторяющимися ключами.</p>
    <p >В одной из моих статьей я уже писал как бороться с повторяющимися
    ключами. Теперь же рассмотрим ситуации, при которых возникают сообщения об ошибках
    в результате появления повторяющихся ключей. А таковых бывает несколько. Набираем
    в известном всем Books Online (BOL) сочетание «duplicate key», сортируем по
    колонке «Местонахождение» и перемещаемся на строки с разделом «Troubleshooting».
    Получаем:</p>
    <table width="100%" border="1">
    <tr align="center" valign="middle">
    <td><b>Native
    error</b> <b>Код ошибки SQL</b> </td>
    <td><b>Severity</b>
    <b>Уровень «серьезности» ошибки</b> </td>
    <td><b>Текст ошибки</b>
    </td>
    </tr>
    <tr>
    <td>1505 </td>
    <td>14</td>
    <td>CREATE UNIQUE
    INDEX terminated because a duplicate key was found for index ID %d. Most
    significant primary key is '%S_KEY'. </td>
    </tr>
    <tr>
    <td colspan="3">Невозможно
    создать уникальный индекс так как в талибце найдены повторяющиеся ключи
    </td>
    </tr>
    <tr>
    <td>1508 </td>
    <td>14</td>
    <td>CREATE INDEX
    terminated because a duplicate row was found. Primary key is '%S_KEY'. </td>
    </tr>
    <tr>
    <td colspan="3">Невозможно
    создать кластерный индекс так как в таблице найдены повторяющиеся ключи
    </td>
    </tr>
    <tr>
    <td>2601 </td>
    <td>14 </td>
    <td>Cannot insert
    duplicate key row in object '%.*ls' with unique index '%.*ls'. </td>
    </tr>
    <tr>
    <td colspan="3" >Невозможно вставить строки (обновить строки)
    в таблице, так как для нее создан уникальный индекс и строка с таким ключом
    уже есть в таблице </td>
    </tr>
    </table>
    <p >Первые две ошибки случаются когда предпринимается попытка создания
    индекса (уникального или кластерного). Третья ошибка происходит при попытке
    вставки записи (либо изменении поля существующей записи) и при этом нарушается
    уникальность уже существующего индекса.</p>
    <p >В том же BOL в качестве способа нахождения повторяющихся ключей
    указан такой оператор:</p>
    <p >Select field,…, fieldN form table group by field,…, fieldN,</p>
    <p >здесь field,…, fieldN – набор полей таблицы, по которому создан
    индекс, уникальный которого нарушается. Это конечно неудобно, так как приходится
    пролистывать весь запрос для нахождения повторяющихся ключей.

    Читать всю статью: http://www.klerk.ru/soft/1c?1996
    Поделиться с друзьями

  2. #2
    nick2009
    Гость
    Большое человеческое спасибо за помощь все помогло

Информация о теме

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

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)