40 lines
1.3 KiB
SQL
40 lines
1.3 KiB
SQL
create temporary view tables as
|
|
select l.schema,
|
|
l.name,
|
|
l.type,
|
|
l.wr as is_without_rowid,
|
|
l.strict as is_strict
|
|
from sqlite_schema s
|
|
left join pragma_table_list l on s.name = l.name
|
|
where s.type = 'table';
|
|
|
|
create temporary view columns as
|
|
select tables.name as table_name,
|
|
table_info.name as column_name,
|
|
lower(table_info.type) as column_type,
|
|
"notnull",
|
|
dflt_value is not null as has_default_value,
|
|
ifnull(dflt_value, 0) dflt_value,
|
|
pk != 0 as is_primary_key,
|
|
pk as primary_key_rank,
|
|
fk."table" is not null as is_foreign_key,
|
|
ifnull(fk."table", '') as fk_target_table,
|
|
ifnull(fk."to", '') as fk_target_column
|
|
from tables
|
|
join pragma_table_info(tables.name) as table_info
|
|
left join pragma_foreign_key_list(tables.name) as fk on fk."from" = column_name;
|
|
|
|
create temporary view indexes as
|
|
select idx.name as index_name,
|
|
tables.name as table_name,
|
|
idx."unique" as is_unique
|
|
from tables
|
|
join pragma_index_list(tables.name) idx;
|
|
|
|
create temporary view index_columns as
|
|
select indexes.index_name,
|
|
idx_cols.name as column_name,
|
|
idx_cols.seqno as rank
|
|
from indexes
|
|
join pragma_index_info(indexes.index_name) as idx_cols;
|