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