Ciao a tutti,

è possibile gestire gli errori con mysql e non con php, in maniera tale da non fare inutili select? Mi spiego :

Ho una tabella per gli utenti, e vorrei che gli ogni utente differisca dall'altro per username ed email. A questo punto , in fase di registrazione, per controllare se un utente è gia registrato con quell'user o email andrebbe fatta una select. Per evitare tutti questi accessi al db (select per il controllo, eventuale insert per la registrazione) è possibile ricevere un errore dal db dopo aver fatto la insert ?

Ho provato così :
Codice PHP:
CREATE TABLE IF NOT EXISTS UTENTI (

  
user char(25NOT NULL,
  
email char(60NOT NULL,
  
pass char(128),
  
  
CONSTRAINT MIACHIAVE UNIQUE (useremail)
);

insert into utenti(user,emailvalues('simone','simoness');
insert into utenti(user,emailvalues('simone','simoness1111'); 
Così facendo, se ALMENO uno dei due campi è diverso (in questo caso email) posso aggiungere entrambi i record, e ciò non soddisfa le mie esigenze. Ho provato però ad usare la clausola UNIQUE sui due campi user/email , riesco a fare ciò che desidero ma lato php poi non so quale dei due campi è stato violato, cioè se l'utente ha inserito un'email o una user gia registrata, o magari tutti e due. Il mio obiettivo è quindi quello di far fare al sito, in fase di registrazione, sempre e solo la insert, e di replicare poi all'utente l'eventuale messaggio di conferma/errore restituito dal db.

In più, mi piacerebbe sapere se è possibile , usando la clausola CHECK , controllare che il campo mail sia del tipo '%@%.%' , in maniera tale da verificare se l'utente ha inserito una mail corretta. Forse però , dato che il mio intento è quello di fare pochi e importanti/concreti accessi al db , sarebbe meglio fare un controllo usando JavaScript.

Potreste aiutarmi a risolvere questo piccolo problemino ? (in particolare il primo punto)