In MySQL, Enter a row in the child table without having row in the parent table
Example of insert row in Child table without having a row in Parent table MySQL
- Create the table Parent P1 and Child C1.
mysql> create table p1(id integer primary key, name varchar(100)); Query OK, 0 rows affected (0.09 sec) mysql> create table c1(cid integer primary key, pid integer, foreign key (pid) references p1(id)); Query OK, 0 rows affected (0.09 sec)
2. Insert data in the Parent and child table and child table throw error due to not presence of data in the parents table.
mysql> insert into p1 values (1,'a'); Query OK, 1 row affected (0.03 sec) mysql> insert into p1 values (2,'b'); Query OK, 1 row affected (0.01 sec) mysql> insert into c1 values (2,5); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`c1`, CONSTRAINT `c1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `p1` (`id`))
3. Disable the foreign key check and enable it.
mysql> SET FOREIGN_KEY_CHECKS = 0; Query OK, 0 rows affected (0.00 sec) mysql> insert into c1 values (3,5); Query OK, 1 row affected (0.02 sec) mysql> SET FOREIGN_KEY_CHECKS = 1; Query OK, 0 rows affected (0.00 sec)
4. After enabling the foreign key check, the insert query throw error again.
mysql> insert into c1 values (4,5); ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test`.`c1`, CONSTRAINT `c1_ibfk_1` FOREIGN KEY (`pid`) REFERENCES `p1` (`id`))
5. Verify the data in both P1 and C1 tables.
mysql> select * from c1; +-----+------+ | cid | pid | +-----+------+ | 3 | 5 | +-----+------+ 1 row in set (0.00 sec) mysql> select * from p1; +----+------+ | id | name | +----+------+ | 1 | a | | 2 | b | +----+------+ 2 rows in set (0.00 sec)
No comments:
Post a Comment