加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – ON DELETE CASCADE无法在MySQL中运行

发布时间:2020-12-13 13:53:42 所属栏目:PHP教程 来源:网络整理
导读:我使用以下SQL创建名为app_info的表: CREATE TABLE IF NOT EXISTS `app_info` (`_id` int(11) NOT NULL AUTO_INCREMENT,`app_name` varchar(50) DEFAULT NULL,`app_owner` varchar(50) DEFAULT NULL,`last_update` timestamp NULL DEFAULT CURRENT_TIMESTAM
我使用以下SQL创建名为app_info的表:
CREATE TABLE IF NOT EXISTS `app_info` (
`_id` int(11) NOT NULL AUTO_INCREMENT,`app_name` varchar(50) DEFAULT NULL,`app_owner` varchar(50) DEFAULT NULL,`last_update` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

我使用以下SQL创建名为tab_info的表:

CREATE  TABLE `myDB`.`tab_info` (
`_id` INT NOT NULL AUTO_INCREMENT,`app_id` INT NOT NULL,`tab_title` VARCHAR(15) NOT NULL,PRIMARY KEY (`_id`),UNIQUE INDEX `app_id_UNIQUE` (`app_id` ASC),INDEX `app_tab_key` (`app_id` ASC),CONSTRAINT `app_tab_key`
  FOREIGN KEY (`app_id` )
  REFERENCES `myDB`.`app_info` (`_id` )
  ON DELETE CASCADE
  ON UPDATE CASCADE);

但是当我从主键表中删除数据时,外键表中的孤立行不会自动删除.有谁知道是什么问题?

MyISAM存储引擎不支持外键约束.解析约束但忽略忽略.

要解决您的问题,请使用InnoDB引擎(对于两个表).

CREATE TABLE ( ... ) ENGINE = InnoDB ... ;

您可以更改存储引擎,而不是删除表并重新创建它们:

ALTER TABLE myDB.app_info ENGINE = InnoDB;
ALTER TABLE myDB.tab_info ENGINE = InnoDB;

更改引擎后,您需要再次添加外键约束.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读