繁体   English   中英

在 mysql 程序中设置 FOREIGN_KEY_CHECKS=0

[英]SET FOREIGN_KEY_CHECKS=0 inside mysql procedure

我有两个具有 PK 和 FK 关系的表,如下所示。

询问

CREATE TABLE `sector_tab` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` smallint(6) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

CREATE TABLE `ticker_tab` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`company_title` varchar(255) DEFAULT NULL,
`sector_num` smallint(6) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `ind_sector_number` (`sector_num`),
CONSTRAINT `ticker_tab_ibfk_1` FOREIGN KEY (`sector_num`) 
REFERENCES `sector_tab` (`code`),
) ENGINE=InnoDB AUTO_INCREMENT=4096 DEFAULT CHARSET=utf8;

现在,当我想截断 'sector_tab' 表但由于 PK-FK 关系我收到错误,所以我想用 SET FOREIGN_KEY_CHECKS=0 禁用它,但我不能这样做,但是当我在程序中提到 FOREIGN_KEY_CHECKS=0 时如下所示并运行它的工作。 怎么会出现这种情况?

CREATE PROCEDURE `proc_FK_diable`()<br>
BEGIN

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE sector_tab;
SET FOREIGN_KEY_CHECKS=1;<br>
END

我正在从 Mysql 查询浏览器 1.1

delimiter $
CREATE PROCEDURE proc_FK_diable()
BEGIN

SET FOREIGN_KEY_CHECKS = 0;

TRUNCATE TABLE sector_tab;

SET FOREIGN_KEY_CHECKS = 1;
END
$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM