PHP

2010-11-24 6 views
12

में MySQL विदेशी कुंजी बाधाओं को अनदेखा करें क्या phs स्क्रिप्ट में mysql विदेशी कुंजी बाधाओं को ओवरराइड करने का कोई तरीका है?PHP

मेरे पास php से mysql को पास की गई एक क्वेरी है, लेकिन यह एक विदेशी कुंजी बाधा में विफल रहता है, क्या डीबी स्कीमा को बदलने के बिना इसे पाने का कोई तरीका है?

मैं बस कुछ परीक्षण कर रहा हूं, इसलिए जब मैं कर रहा हूं तो मैं पंक्ति को हटा दूंगा।

उत्तर

18
mysql_query('SET foreign_key_checks = 0'); 
//do some stuff here 
mysql_query('SET foreign_key_checks = 1'); 
6

आपको लगता है कि MySQL क्वेरी विदेशी कुंजी निष्क्रिय करने के लिए निष्पादित कर सकते हैं की जाँच करें:

SET FOREIGN_KEY_CHECKS=0; 

इसे सक्षम करने के लिए मत भूलना आपका काम पूरा हो:

SET FOREIGN_KEY_CHECKS=1; 
2

भागो क्वेरी: set FOREIGN_KEY_CHECKS=0;

mysql> insert into bar values(1); 
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`bar`, CONSTRAINT `bar_ibfk_1` FOREIGN KEY (`foo_id`) REFERENCES `foo` (`foo_id`) ON UPDATE CASCADE) 
mysql> set FOREIGN_KEY_CHECKS=0; 
Query OK, 0 rows affected (0.00 sec) 
mysql> insert into bar values(1); 
Query OK, 1 row affected (0.00 sec) 
1

मेरे पास मेरे स्निपेट संग्रह में ऐसा कुछ है:

SET @[email protected]@FOREIGN_KEY_CHECKS; 
SET @@FOREIGN_KEY_CHECKS=0; 

-- Do stuff here 

SET @@[email protected]_FOREIGN_KEY_CHECKS; 
SET @BACKUP_FOREIGN_KEY_CHECKS=NULL; 
+0

यह सही उत्तर है। मुझे याद नहीं है कि डबल "@@" की आवश्यकता है। – Xeoncross

+0

यह सत्र चर के लिए वाक्यविन्यास में से एक है: 'सेट सत्र भोजन = 1', 'SET @@ SESSION.FOO = 1' या' SET @@ FOO = 1'। –

संबंधित मुद्दे