Откуда берётся индекс к файлу, если его не просили?
Приветствую!
После августовского обновления перестал работать код. Файл db мало того, что создаётся с автоиндексом, так ещё и уникальным по первому полю структуры. Вместе с самим db теперь ещё и индекс создаётся, хотя его никто не просил. Раньше такого не было. Если мне индекс понадобится, я его сам создаю, а теперь ещё и контролировать надо на предмет "а вдруг он уже есть".
врем_заг=ДИР_DBF+"\zag.db"
ЕСЛИ СУЩ_ФАЙЛ(врем_заг) ТО ФАЙЛ_УДАЛИТЬ(врем_заг) КОНЕЦ_ЕСЛИ
СОЗДАТЬ (бд, ТИП_SQL)
бд=SQL_СОЗДАТЬ(врем_заг,["INN":ТИП_СТРОКА:12,
"ID_ORG":ТИП_ЧИСЛО:12;0,
"NAME":ТИП_СТРОКА:50,
.....
"D9":ТИП_ЧИСЛО:12;2])
Если попытаться создать две записи с одинаковым значением поля INN, естественно вываливается ошибка "Повторяющееся значение ключевого поля в базе"
Зачем такое получилось и кто виноват, проверьте, пожалуйста.
- 35 просмотров
8.8114
1. Для функции SQL_СОЗДАТЬ и метода ТИП_SQL.НОВАЯ добавлены возможности:
- После имени поля можно указать восклицательный знак, что приведет
к включению поля в первичный ключ (primary key).
По умолчанию в первичный ключ включается первое поле в списке
(это было и ранее).
Первичные ключи поддерживаются только для таблиц Paradox (*.DB).
8.8115
2. В функции SQL_СОЗДАТЬ добавлена возможность подавления назначения первого поля
первичным ключом в таблицах Paradox (DB).
Для этого теперь можно указать символ ~ (тильда) после имени первого поля.
Это позволяет создавать таблицы Paradox без первичного ключа.
Обновлена справка по внутреннему языку.
P.S. Раньше (до 8.8114) был баг, что создание первичного ключа зависело от регистра символов расширения файла.
Если сделать "zag.DB", то первичный ключ для первого поля создавался во всех предыдущих версиях.
В версии 8.8115 добавлено явное средство подавления создания первичного ключа - тильда после имени поля. Т.е. в коде:
"INN"~:ТИП_СТРОКА:12