資訊模式
table_constraints
檢視table_constraints
包含屬於特定表的所有約束,這些表要滿足的條件是:當前使用者擁有表或者是當前使用者在表上具有某種除SELECT
之外的特權。
SELECT * FROM information_schema.table_constraints;
constraint_table_usage
檢視constraint_table_usage
標識在當前資料庫中被某個約束使用的所有表(這與檢視table_constraints
不同,它標識哪些表約束定義在哪些表上)。對於一個外來鍵約束,這個檢視標識該外來鍵引用的表。對於一個唯一或主鍵約束,這個檢視僅標識該約束屬於的表。檢查約束和非空約束不被包括在這個檢視中。
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)
參見:資訊模式