2012-08-31 89 views

回答

4

由於MySQL的5.1.10,都可以通過加入獲得來自INFORMATION_SCHEMA tables此信息REFERENTIAL_CONSTRAINTSKEY_COLUMN_USAGE

SELECT kcu.COLUMN_NAME 
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc 
    JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu 
USING (CONSTRAINT_CATALOG, CONSTRAINT_SCHEMA, CONSTRAINT_NAME) 
WHERE 'CASCADE' IN (rc.DELETE_RULE, rc.UPDATE_RULE) 
    AND kcu.TABLE_SCHEMA = DATABASE() 
    AND kcu.TABLE_NAME = 'my_table' 
+0

+ 1爲了善良eggyal,停止通過尋找更好和更聰明的方式讓我出現:P – Fluffeh

+0

@Fluffeh:對不起! :) – eggyal

+0

其實,它很棒,我從你那裏學到了更好的做事方式,所以繼續努力吧! – Fluffeh

2

您可以使用:

show create table tableName; 

這將輸出具有級聯刪除引用一個創建表。

實施例從docs鉤住:

mysql> SHOW CREATE TABLE ibtest11c\G 
*************************** 1. row *************************** 
     Table: ibtest11c 
Create Table: CREATE TABLE `ibtest11c` (
    `A` int(11) NOT NULL auto_increment, 
    `D` int(11) NOT NULL default '0', 
    `B` varchar(200) NOT NULL default '', 
    `C` varchar(175) default NULL, 
    PRIMARY KEY (`A`,`D`,`B`), 
    KEY `B` (`B`,`C`), 
    KEY `C` (`C`), 
    CONSTRAINT `0_38775` FOREIGN KEY (`A`, `D`) 
REFERENCES `ibtest11a` (`A`, `D`) 
ON DELETE CASCADE ON UPDATE CASCADE, // <--- This is what you are looking for 
    CONSTRAINT `0_38776` FOREIGN KEY (`B`, `C`) 
REFERENCES `ibtest11a` (`B`, `C`)  // <--- This is what you are looking for 
ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=INNODB CHARSET=latin1 
1 row in set (0.01 sec) 
+0

1爲競爭精神 – asprin

相關問題