我在 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;
我想查询模式中具有外键约束的每个表并了解其他选项。 我尝试过以下查询:
select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE;
select *
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where CONSTRAINT_TYPE = 'FOREIGN KEY';
不幸的是,他们没有给我删除或更新操作。
最佳答案
如果您的表是 INNODB(我假设它们已被赋予外键),请查看 INFORMATION_SCHEMA
.SYS_FOREIGN
。从文档中,type
字段为您提供 ON DELETE
/ON UPDATE
操作:
A collection of bit flags with information about the foreign key column, ORed together. 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_NAME
或REF_NAME
进行查询。
关于mysql - 使用特定外键选项查询所有约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29420804/