Ciao tutti e buongiorno ho una tabella con 5 campi così strutturata:
id_campo1, id_campo2, id_campo3, descrizione, abilitato
Il primo campo è un boolean il secondo un tynint unsigned, i terzo un tynint unsigned, il quarto un varchar e il quinto un enum.
Il mio problema è questo per il valore zero del campo1 posso avere un duplicato nel campo3 a patto che il campo2 sia diverso, se invece il campo1 è uguale a 1 non posso avere duplicati per il campo3 e nemmeno per il campo2, in pratica il campo tre può essere ripetuto tre volte nella tabella a patto che le righe siano in questo modo
id_campo1,id_campo2,id_campo3,descrizione,abilitato
0 0 3 Null si "riga valida"
0 1 3 Null no "riga valida"
1 1 3 Null si "riga valida"
0 4 3 Null si "riga non valida"
1 4 3 Null si "riga non valida"
1 2 3 Null si "riga non valida"
1 2 1 Null si "riga valida"
Il campo1 da boolean potrà avere solo 0 o 1 campo2 e 3 vanno da 0 a 255, quindi per uno stesso dato nel campo3 per essere valida l'immissione posso avere solo due volte 0 nel campo1 ed una solo volta 1 nel campo1, non posso avere duplicati nel campo2 se ho già due volte 0 nel campo1.
Spero di essermi spiegato, avevo pensato ad una primary Key composta dal campo1,2,3 ma in questo modo posso avere molti più valori ammissibili di quanti sono richiesti, quindi volevo capire se era possibile risolver con un trigger, e se potete darmi una linea guida per scriverlo.
Grazie