CREATE TABLE users( USERID BIGINT AUTO_INCREMENT, FNAME CHAR(50), LNAME CHAR(50), EMAIL CHAR (100), PHONE CHAR (50), PRIMARY KEY (USER_ID), UNIQUE KEY EMAIL (EMAIL), UNIQUE KEY PHONE (PHONE) ) ENGINE=InnoDB CHARSET=utf8mb4; CREATE TABLE items( ITEMS_ID BIGINT AUTO_INCREMENT, USERID BIGINT, ITEMS_TO BIGINT, ITEMS_FROM BIGINT, ACCEPTED_ITEMS BIGINT, PRIMARY KEY (ITEMS_ID), FOREIGN KEY (USERID) REFERENCES users(USERID), FOREIGN KEY (ITEMS_TO) REFERENCES users(USERID), FOREIGN KEY (ITEMS_FROM) REFERENCES users(USERID), FOREIGN KEY (ACCEPTED_ITEMS) REFERENCES users(USERID) )ENGINE=InnoDB CHARSET=utf8mb4; ERROR DBD::mysql::st execute failed: Cannot add or update a child row: a foreign key constraint fails (`db701`.`items`, CONSTRAINT `items_ibfk_2` FOREIGN KEY (`ITEMS_TO`) REFERENCES `users` (`USERID`)) $ID = '1'; $NULL = 'NULL'; $ID2 = '2'; $ID3 = '1'; my $update = $DBH->prepare("UPDATE items SET ITEMS_TO =?, ITEMS_FROM =? WHERE USERID =? AND ITEMS_ID = ?"); $update->execute($ID, $NULL, $ID2, $ID3); $update->finish(); it works without ITEMS_FROM and i want to set ITEMS_FROM to null this works my $update = $DBH->prepare("UPDATE items SET ITEMS_TO =? WHERE USERID =? AND ITEMS_ID = ?"); $update->execute($ID, $ID2, $ID3); $update->finish();