mysql啟動和關閉外來鍵約束

00潤物無聲00發表於2017-01-06

  當刪除具有外來鍵約束的表中資料時, 

[SQL]TRUNCATE table itcast_privilege
[ Err ] 1701 - Cannot TRUNCATE a TABLE referenced IN a FOREIGN KEY CONSTRAINT (
	`itcastoa0720`.`itcast_role_privilege`,
	CONSTRAINT `FK350BD81DB0E19C6E` FOREIGN KEY (`privilegeId`) REFERENCES `itcastoa0720`.`itcast_privilege` (`id`)
)

  我們執行語句檢視錶的外來鍵約束資訊

SELECT
	*
FROM
	information_schema.TABLE_CONSTRAINTS t
WHERE
	t.TABLE_NAME = 'itcast_privilege'
AND CONSTRAINT_TYPE = 'FOREIGN KEY';


我們檢視該表的FOREIGN_KEY_CHECKS的值

SELECT  @@FOREIGN_KEY_CHECKS;


我們可以控制FOREIGN_KEY_CHECKS,來開啟或關閉外來鍵約束

  如果值為1啟動外來鍵約束,如果值為0表示禁用外來鍵約束

所以當出現外來鍵約束無法刪除資料是,可以選擇禁用外來鍵約束,之後再次開啟。

SET FOREIGN_KEY_CHECKS=0;
TRUNCATE TABLE itcast_privilege
SET FOREIGN_KEY_CHECKS=1;




相關文章