Вверх ↑
Этот топик читают: Гость
Ответов: 16884
Рейтинг: 1239
#16: 2010-03-10 13:28:41 ЛС | профиль | цитата
Ravilr, согласен. Я и сам хотел это предложить.
Хотя, если хорошо подумать, то именно эта тема и вызвала обсуждение.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#17: 2010-03-10 13:38:06 ЛС | профиль | цитата
Tad писал(а):
Перед дампированием нужно делать VACUUM

Делал, по-деревне, нумерация не меняется.
Tad, не грузи, сам не прав. Результирующий дамп завязан на INSERT, а там у нас не применяется AUTOINCREMENT, а чисто принудительное назначение ID. Или ты будешь отрицать, что INSERT это не создание новой записи
Вот это что, не вновь созданная таблица

CREATE TABLE elements(id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(64),info varchar(64),tab int,pos int,hash varchar(32));
Это и есть твоя "чистая тетрадь"
Мы сами создаем ее и сами в нее добавляем записи с нуля. Так что я могу нумерацию и сам править, если мне надо, важно, чтобы дубликатов не было в дампе

Tad писал(а):
При дампировании получается то, что записано в таблицу

А записывает компонент в базу сам HiAsm при инициализации *.ini. Так что вопросы не ко мне.
------------ Дoбавленo в 13.47:
Вот я сейчас насчитал 45 пустот. Те, у нас на 45 компонентов меньше, чем их последний номер -- не 847, а 802
карма: 22

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#18: 2010-03-10 13:53:04 ЛС | профиль | цитата
Перепост Tad-а из параллельной ветки

Tad писал(а):
nesco писал(а):
А записывает компонент в базу сам HiAsm при инициализации *.ini. Так что вопросы не ко мне.
Наконец-то
nesco писал(а):
Это и есть твоя "чистая тетрадь"

а заменить id на NULL в elements.sql перед выкладыванием на SVN слабо ?
nesco, с БД можно делать ВСЁ, что душе угодно.

карма: 22

0
Разработчик
Ответов: 26170
Рейтинг: 2127
#19: 2010-03-10 13:54:56 ЛС | профиль | цитата
Tad писал(а):
а заменить id на NULL в elements.sql перед выкладыванием на SVN слабо ?

Сделаем, и пустоты убрать надо, желательно
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#20: 2010-03-10 14:28:36 ЛС | профиль | цитата
Вот эти команды прекрасно переносят данные из одной таблицы в другую в нужном нам порядке и перенумеровывают строки

VACUUM; // удаляем пустышки
CREATE TABLE prom(id INTEGER PRIMARY KEY AUTOINCREMENT,name varchar(64),info varchar(64),tab int,pos int,hash varchar(32)); // создаем вспомогательную таблицу
INSERT INTO prom SELECT NULL,name,info,tab,pos,hash FROM elements ORDER BY tab,pos; //переписываем в нужном порядке с перенумерацией id
DELETE FROM elements WHERE 1; // чистим таблицу elements
INSERT INTO elements SELECT * FROM prom; // из вспомогательной в elements
DROP TABLE prom; // удаляем вспомогательную
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#21: 2010-03-10 15:02:22 ЛС | профиль | цитата
Уже исправил.
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#22: 2010-03-10 15:09:25 ЛС | профиль | цитата
Любо даже посмотреть.
Осталось поделиться опытом с выкладывающими elements.db на SVN

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#23: 2010-03-10 16:11:50 ЛС | профиль | цитата
Tad, объясни мне, зачем вот тут WHERE, что он вообще делает

DELETE FROM elements WHERE 1;
почему нельзя просто очистить

DELETE FROM elements;
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#24: 2010-03-10 16:28:35 ЛС | профиль | цитата
nesco писал(а):
WHERE 1
"пока есть" (1=True) - заставляет удалять все записи от начала и до конца таблицы
nesco писал(а):
почему нельзя просто очистить

DELETE FROM elements;
А что, чистит так ?
А где тут указано, что удалять? Попробовать надо. Не пробовал
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#25: 2010-03-10 16:34:54 ЛС | профиль | цитата
Tad писал(а):
Попробовать надо. Не пробовал

Да работает это прекрасно, только что проверил. Я и раньше это запрос использовал без WHERE

У Грубера это нерегламентируется, вот пример из книги
М. Грубер писал(а):
Чтобы удалить все содержание таблицы Продавцов, вы можете ввести следующее условие:
DELETE FROM Salespeople;

ничего про WHERE 1 там нет

А твой запрос на реиндексацию хорошо бы встроить в саму базу. Очень удобно работать из-под Sqliteadmin-a
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#26: 2010-03-10 16:44:46 ЛС | профиль | цитата
Да я привык к "DELETE FROM elements WHERE 1;"
А реиндексацию нужно использовать очень осторожно. Можно так угробить БД, что и не восстановишь нормальную работу проги.


карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#27: 2010-03-10 16:59:00 ЛС | профиль | цитата
Tad писал(а):
Можно так угробить БД, что и не восстановишь нормальную работу проги

Можно, если индексы где-то еще применяются, но у нас не используются индексы таблицы elements. Вот таблицу groups лучше не реиндексировать, в elements на ее индексы есть ссылки
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#28: 2010-03-10 17:49:24 ЛС | профиль | цитата
nesco писал(а):
если индексы где-то еще применяются
поэтому и нельзя
nesco писал(а):
запрос на реиндексацию хорошо бы встроить в саму базу

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26170
Рейтинг: 2127
#29: 2010-03-10 17:53:30 ЛС | профиль | цитата
Tad, ты же в курсе, что этот запрос не выполнится, пока ты его не активизирушь.
Tad писал(а):
поэтому и нельзя

Ну и где они используются у нас
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#30: 2010-03-10 18:27:29 ЛС | профиль | цитата
nesco писал(а):
запрос на реиндексацию хорошо бы встроить в саму базу
Здесь не понял
Ты имел ввиду что-то такое
не проверял !!! Тренироваться на кошках !!!!!!!!!
code_17266.txt
------------ Дoбавленo в 18.29:
nesco писал(а):
Ну и где они используются у нас
это вопрос к проектировщику БД
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_17266.txt [2.7KB] [404]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)