суббота, 24 апреля 2010 г.

Метаданные sqlite3

Как выяснилось, у sqlite очень просто получить список существующих таблиц, индексов, представлений и триггеров.


Например, создадим структуру:
CREATE TABLE IF NOT EXISTS table1 (id integer, name text);
CREATE INDEX IF NOT EXISTS index1 ON table1 (name);
CREATE VIEW IF NOT EXISTS view1 AS SELECT name FROM table1;
CREATE TRIGGER IF NOT EXISTS trigger1  DELETE ON table1 
BEGIN 
  select * from table1;
END

А потом спросим о ней sqlite:
select * from sqlite_master;




Таблица sqlite_master содержит список объектов базы, включая их тип, имя и DDL-запрос. К сожалению, детализация каждого объекта (например, состав полей таблицы с типами и ограничениями) так на поверхности не лежит, и как ее получить - непонятно :(.

2 комментария:

  1. Курим сюда http://www.sqlite.org/pragma.html
    Как пример:
    PRAGMA table_info( 'sqlite_master' );
    Это метаданные метаданных :)

    ОтветитьУдалить
  2. Уже раскурил.
    Позже будет большой пост с подробным описанием получения и использования метаданных sqlite

    ОтветитьУдалить