2012-10-10 94 views
1

我正在構建一個使用PDO/PHP/MySQL與Smarty集成的數據網格應用程序。從PHP獲取MySQL主鍵和外鍵約束?

有沒有一種快速,便捷的方式(使用DB模式或者一些PDO命令),以獲得在PHP中:

  • 表的主鍵
  • 一個表的外鍵約束列表?

(我使用InnoDB作爲模式)。

回答

6

您可以通過查詢information_schema表中獲取關鍵信息:

SELECT * 
FROM information_schema.KEY_COLUMN_USAGE 
WHERE REFERENCED_TABLE_NAME = 'my_table_name' 

MySQL: How to I find all tables that have foreign keys that reference particular table.column AND have values for those foreign keys?

您可以通過使用SHOW TABLE得到主鍵:

SHOW INDEX FROM my_table_name 
WHERE key_name = 'PRIMARY' 

MySQL: Determine Table's Primary Key Dynamically

在有很多數據庫/表的服務器上查詢information_schema表可能會很慢。

您可以使用該加快步伐:

SET GLOBAL innodb_stats_on_metadata = 0 

http://www.mysqlperformanceblog.com/2011/12/23/solving-information_schema-slowness/

+0

非常感謝,expecially爲INFORMATION_SCHEMA性能技巧,這是正是我所需要的信息種類。 – Cranio