MySQL是一款常用的關系型數據庫管理系統,它支持在表中創建外鍵。在某些場景下,我們需要查詢一張表是否存在外鍵,這個通過MySQL提供的一些系統表可以輕易地實現。
SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_SCHEMA = 'your_database_name'
AND REFERENCED_TABLE_NAME = 'your_referenced_table_name';
上面的代碼可以查詢到指定數據庫中,指定表是否存在外鍵。其中需要替換的兩個占位符是your_database_name
和your_referenced_table_name
。如果結果集為空,則表示該表不存在外鍵。
我們也可以使用簡單的IF語句包裝一下這個查詢,來對查詢結果進行判斷。
IF EXISTS (
SELECT
TABLE_NAME,COLUMN_NAME,CONSTRAINT_NAME,
REFERENCED_TABLE_NAME,REFERENCED_COLUMN_NAME
FROM
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE
REFERENCED_TABLE_SCHEMA = 'your_database_name'
AND REFERENCED_TABLE_NAME = 'your_referenced_table_name'
) SELECT 'This table has foreign keys!' as message ELSE SELECT 'This table does not have foreign keys!' as message;
上面的代碼會輸出字符串,指示該表是否存在外鍵。