【问题标题】:Querying all constraints with a particular foreign key option使用特定外键选项查询所有约束
【发布时间】:2015-04-03 03:48:47
【问题描述】:

我在 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';

不幸的是,他们没有给我删除或更新操作。

【问题讨论】:

  • SHOW CREATE TABLE 是否足够,还是要求您能够按表名动态查询?

标签: mysql sql database


【解决方案1】:

如果您的表是 INNODB(我假设它们被赋予了外键),请查看 INFORMATION_SCHEMA.SYS_FOREIGN。从文档中,type 字段为您提供ON DELETE / ON UPDATE 操作:

位标志的集合,其中包含有关外键列的信息,OR 运算在一起。 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查询。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多