2015-04-02 35 views
0

我在MySql中有多個包含外鍵的表。例如:使用特定的外鍵選項查詢所有約束條件

CREATE TABLE rooms (
    room_no int(11) NOT NULL AUTO_INCREMENT, 
    room_name varchar(255) NOT NULL, 
    building_no int(11) NOT NULL, 
    PRIMARY KEY (room_no), 
    KEY building_no (building_no), 
CONSTRAINT rooms_ibfk_1 
    FOREIGN KEY (building_no) 
    REFERENCES buildings (building_no) 
    ON DELETE CASCADE 
) ENGINE=InnoDB; 

我想查詢具有foriegn鍵約束的模式中的每個表並知道其他選項。 我已經試過以下查詢:

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE; 

select * 
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
where CONSTRAINT_TYPE = 'FOREIGN KEY'; 

不幸的是,他們不給我上刪除或更新操作。

+0

'SHOW CREATE TABLE'是否夠用,還是需要能夠動態查詢表名? – xathien 2015-04-02 19:46:20

回答

0

如果你的表是INNODB(我認爲他們給了外鍵),檢查出INFORMATION_SCHEMA.SYS_FOREIGN。從文檔中,type場給你ON DELETE/ON UPDATE行動:

位標誌的集合有關外鍵列,或運算在一起的信息。 1 = ON DELETE CASCADE,2 = ON UPDATE SET NULL,4 = ON UPDATE CASCADE,8 = ON UPDATE SET NULL,16 = ON DELETE NO ACTION,32 = ON UPDATE NO ACTION。

您可以通過FOR_NAMEREF_NAME進行查詢。