6
有没有办法列出SQLite数据库中的所有外键?SQLite列表数据库中的所有外键
它们似乎并不存储在sqlite_master中,PRAGMA foreign_key_list('table')
只能一次列出一个。
另外,有没有办法列出什么外键引用表?
有没有办法列出SQLite数据库中的所有外键?SQLite列表数据库中的所有外键
它们似乎并不存储在sqlite_master中,PRAGMA foreign_key_list('table')
只能一次列出一个。
另外,有没有办法列出什么外键引用表?
使用SQLite shell,使用.schema
指令,并使用GREP来过滤包含REFERENCES
的行。
从SQLite储存库shell.c
,今天的版本在后备箱中,两个查询:
SELECT sql
FROM (
SELECT sql sql, type type, tbl_name tbl_name, name name
FROM sqlite_master
UNION ALL
SELECT sql, type, tbl_name, name
FROM sqlite_temp_master
)
WHERE tbl_name LIKE shellstatic()
AND type != 'meta'
AND sql NOTNULL
ORDER BY substr(type, 2, 1), name
和
SELECT sql
FROM (
SELECT sql sql, type type, tbl_name tbl_name, name name
FROM sqlite_master
UNION ALL
SELECT sql, type, tbl_name, name
FROM sqlite_temp_master
)
WHERE type != 'meta'
AND sql NOTNULL
AND name NOT LIKE 'sqlite_%'
ORDER BY substr(type, 2, 1), name
第二个可能是你在找什么。
嗨,感谢Benoit。我应该提到我会在android客户端上执行此操作,因此无法访问SQLite shell。 :( – 2011-03-31 11:28:43
@Fergal Moran:更新回答 – Benoit 2011-03-31 11:34:37
嗨Benoit - 这给了我所有表的全部ddl,这是肯定有用的,但仍然留给我解析外键特定的东西的问题。它可能会更容易我在“SELECT tbl_name FROM sqlite_master WHERE type ='table'”的结果上调用PRAGMA foreign_keys,但我试图找到一个更简单的方法来获取它? – 2011-03-31 11:39:20