2010-03-18 31 views
7

Có cách nào dễ dàng để truy vấn một bảng cho các ràng buộc của nó (ngoại lệ đặc biệt) như hiển thị tạo bảng, nhưng đối với các ràng buộc chỉ?Mysql hiển thị tạo ra ràng buộc?

cảm ơn,

pvgoddijn

Trả lời

10

Để chỉ hiển thị các ràng buộc khoá ngoại bạn có thể kiểm tra constraint_type trong information_schema.table_constraints và nhận được các cột bị ảnh hưởng trong information_schema.key_column_usage thông qua một tham gia

SELECT b.table_name, b.column_name, b.constraint_name, 
     b.referenced_table_name, b.referenced_column_name 
FROM information_schema.table_constraints a 
JOIN information_schema.key_column_usage b 
ON a.table_schema = b.table_schema AND a.constraint_name = b.constraint_name 
WHERE a.table_schema=database() AND a.constraint_type='FOREIGN KEY' 
ORDER BY b.table_name, b.constraint_name; 
+0

cảm ơn đây chính xác là những gì tôi đang tìm kiếm. – pvgoddijn

+0

+1 THỬ NGHIỆM NICE. FTW ... – KeatsKelleher

-3
SHOW TABLE STATUS FROM db_name LIKE 'tbl_name'; 

Các ràng buộc khoá ngoại được liệt kê trong cột Comment của đầu ra.

+0

này không hoạt động trên tất cả các loại bảng. –

1
select * from 
information_schema.KEY_COLUMN_USAGE 
where table_schema = <db_name> 
and table_name = <table_name>; 
Các vấn đề liên quan