Primero buscas que exista algún contacto con tipo 'Principal' ( es tal cual asi? Mayúsculas y minúsculas? )
También veo que tienes 2 códigos de contacto. La variable $cod y $codigo... hacen referencia al mismo código? Así podríamos solo usar el que obtienes del $_GET.
Otra cosa que noté. Se supone que solo debe haber uno con tipo 'Principal', así que no es necesario actualizar usando el código de contacto, con buscar utilizando el tipo como referencia es suficiente.
De dónde sale la variable $dato de la 2da consulta Update?
Código PHP:
Ver original$dw=$_SESSION['pass']; // pass de cliente
$cod = $_GET['cod'];// id de contacto
$sql = mysql_query("SELECT id_contacto FROM contacto WHERE pass = '".$dw."' AND tipo = 'Principal'",$link); // ACTUALIZO PRINCIPAL A SEGUNDARIO
$sql_cambia =mysql_query("UPDATE contacto SET tipo = 'Segundario' WHERE tipo = 'Principal'",$link);
}
$sql_actualiza= mysql_query("UPDATE contacto SET tipo = 'Principal' WHERE id_contacto = '".$cod."' AND tipo = 'Segundaro'",$link);
A ver si te funciona. Nos vemos.