powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / SQLite [игнор отключен] [закрыт для гостей] / слежка за метаданными
5 сообщений из 5, страница 1 из 1
слежка за метаданными
    #38920122
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, я к вам за советом.

положим, есть БД и пара подключений к ней из клиентского приложения (моего) - скажем, одно подключение держится (ну или периодически создаётся) браузером структуры БД, а второе - редактором SQL-запросов. Допустим, в редакторе выполнили и закоммитили DDL-запрос. Как теперь первое соединение (браузер) может узнать как именно изменена схема? Т.е. не только узнать о факте изменения, но и о том, какой именно объект и как был изменён.

От того, что сам надумал, не в восторге:

* понятно, что если распарсить вручную текст запроса, поискать там CREATE TABLE и проч., то можно всё понять и оповестить через sendMessage. Буду пока считать этот вариант не подходящим, ибо лень писать парсер, хочется более лёгких путей.

* вариант "PRAGMA schema_version" + "перечитать всю схему заново" считаю ещё более не подходящим - накладно по времени, и не изящно. Фу!

* Можно ли CREATE TRIGGER ON sqlite_master? Если да, то можно создать триггер, который будет дёргать виртуальную таблицу, а её реализация оповестит браузер. Это решение так себе, т.к. появляется лишний триггер, который надо создавать при коннекте, прятать от браузера, уничтожать при дисконнекте. Зато навигация в изменённое место просто сказочная.

Для определённости - SQLite 3.8-с-чем-то - самый распоследний, а подключаюсь с помощью C API.
...
Рейтинг: 0 / 0
слежка за метаданными
    #38920148
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrCatположим, есть БД и пара подключений к ней из клиентского приложения (моего) - скажем, одно подключение держится (ну или периодически создаётся) браузером структуры БД, а второе - редактором SQL-запросов. Допустим, в редакторе выполнили и закоммитили DDL-запрос. Как теперь первое соединение (браузер) может узнать как именно изменена схема? Т.е. не только узнать о факте изменения, но и о том, какой именно объект и как был изменён.
ЗАЧЕМ?
...
Рейтинг: 0 / 0
слежка за метаданными
    #38920170
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Зачем что именно? Два соединения? Можно и одним обойтись. Зачем отслеживать изменение структуры? Хочу написать редактор БД, который будет автоматом обновлять браузер объектов по DDL в редакторе скрипта. Ну представьте, написал в редакторе "CREATE TABLE тра-та-та", нажал Enter, и в соседнем TreeView сразу же табличка нарисовалась.
...
Рейтинг: 0 / 0
слежка за метаданными
    #38920175
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrCatЗачем отслеживать изменение структуры? Хочу написать редактор БД, который будет автоматом обновлять браузер объектов по DDL в редакторе скрипта. Ну представьте, написал в редакторе "CREATE TABLE тра-та-та", нажал Enter, и в соседнем TreeView сразу же табличка нарисовалась.Все среды редактирования СУБД используют один из трех подходов: кнопка обновить на списках объектов БД, парсер запускаемого скрипта, встраивание себя в движок СУБД и организация колбеков на обновление структуры.
Чаще всего используется именно парсер запускаемых скриптов. Это очень простая штука на самом деле.

И прежде чем заниматься написанием нового редактора подумай:
- Чем тебя не устраивают существующие?
- Почему существующие редакторы настолько мало используются?
...
Рейтинг: 0 / 0
слежка за метаданными
    #38920188
MrCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не то, чтобы они меня не устраивали, мне просто нужно быстро въехать в SQLite, вот и практикуюсь - пересматриваю API, пишу свою надстройку, вместо того, чтобы взять готовые компоненты, пишу свой редактор, чтобы было где всё это тестировать.

Из трёх методов парсер выглядит самым приличным, буду его мучать. Спасибо!
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / слежка за метаданными
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]