Tem razão.
Parece que vai está funcionando com:
if (empty($_POST['mycode'])) {
// da forma abaixo, funciona com mysql unique
$query = "INSERT INTO tb_teste (id, mytext, mycode) VALUES ('','$mytext',null)";
} else {
$query = "INSERT INTO tb_teste (id, mytext, mycode) VALUES ('','$mytext','$mycode')";
}