視圖table_constraints
包含屬於特定表的全部約束,這些表要知足的條件是:當前用戶擁有表或者是當前用戶在表上具備某種除SELECT
以外的特權。html
SELECT * FROM information_schema.table_constraints;
視圖constraint_table_usage
標識在當前數據庫中被某個約束使用的全部表(這與視圖table_constraints
不一樣,它標識哪些表約束定義在哪些表上)。對於一個外鍵約束,這個視圖標識該外鍵引用的表。對於一個惟一或主鍵約束,這個視圖僅標識該約束屬於的表。檢查約束和非空約束不被包括在這個視圖中。python
SELECT * FROM information_schema.constraint_table_usage;
# sqlalchemy session query = session.execute( "SELECT * FROM information_schema.table_constraints WHERE constraint_type =:param;", {'param': 'FOREIGN KEY'}) results = query.fetchall() for r in results: table_name = r['table_name'] constraint_name = r['constraint_name'] try: session.execute(f"ALTER TABLE {table_name} DROP CONSTRAINT {constraint_name};") print('成功:', table_name, constraint_name) except: print('失敗:', table_name, constraint_name)
參見:信息模式sql