Извлечение метаданных о столбце таблицы
int sqlite3_table_column_metadata( sqlite3 *db, /* Connection handle */ const char *zDbName, /* Database name or NULL */ const char *zTableName, /* Table name */ const char *zColumnName, /* Column name */ char const **pzDataType, /* OUTPUT: Declared data type */ char const **pzCollSeq, /* OUTPUT: Collation sequence name */ int *pNotNull, /* OUTPUT: True if NOT NULL constraint exists */ int *pPrimaryKey, /* OUTPUT: True if column part of PK */ int *pAutoinc /* OUTPUT: True if column is auto-increment */ );
Процедура sqlite3_table_column_metadata(X,D,T,C,....) возвращает информацию о столбце C таблицы T в базе данных D на соединении с базой данных X. Интерфейс sqlite3_table_column_metadata() возвращает SQLITE_OK и заполняет указатели в последних пяти аргументах соответствующими значениями, если указанный столбец существует. Интерфейс sqlite3_table_column_metadata() возвращает SQLITE_ERROR, если указанный столбец не существует. Если параметр имени столбца в sqlite3_table_column_metadata() является указателем NULL, эта процедура просто проверяет существование таблицы и возвращает SQLITE_OK, если таблица существует, и SQLITE_ERROR, если её нет. Если параметр имени таблицы T в вызове sqlite3_table_column_metadata(X,D,T,C,...) равен NULL, поведение неопределённо.
Столбец идентифицируется по второму, третьему и четвёртому параметрам этой функции. Второй параметр — это имя базы данных (например, "main", "temp" или присоединённой базы данных), содержащей указанную таблицу, или NULL. Если он равен NULL, то все присоединённые базы данных проверяются на наличие таблицы с использованием того же алгоритма, что и движок базы данных для разрешения неквалифицированных ссылок на таблицы.
Третий и четвёртый параметры функции — это имя таблицы и имя столбца желаемого столбца соответственно.
Метаданные возвращаются путем записи в места памяти, переданные как пятый и последующие параметры функции. Любой из этих аргументов может быть NULL, в этом случае соответствующий элемент метаданных опускается.
Параметр Тип
выводаОписание 5-й const char* Тип данных 6-й const char* Имя последовательности сортировки по умолчанию 7-й int Истина, если столбец имеет ограничение NOT NULL 8-й int Истина, если столбец является частью PRIMARY KEY 9-й int Истина, если столбец является AUTOINCREMENT
Память, на которую указывают возвращаемые символьные указатели для типа объявления и последовательности сортировки, остается валидной до следующего вызова любой функции API SQLite.
Если указанная таблица на самом деле является представлением, возвращается код ошибки.
Если указанный столбец — "rowid", "oid" или "_rowid_" и таблица не является таблицей WITHOUT ROWID, и явным образом объявлен столбец INTEGER PRIMARY KEY, то выходные параметры устанавливаются для явно объявленного столбца. Если нет столбца INTEGER PRIMARY KEY, то выходные данные для rowid устанавливаются следующим образом:
data type: "INTEGER" collation sequence: "BINARY" not null: 0 primary key: 1 auto increment: 0
Эта функция заставляет все схемы баз данных читаться с диска и анализироваться, если это ещё не было сделано, и возвращает ошибку, если при загрузке схемы возникают какие-либо ошибки.
См. также списки объектов, констант и функций.
SQLite is in the Public Domain.
https://sqlite.org/c3ref/table_column_metadata.html