'sera a tutti, alcune questioni sul MySQL.

A) Per alcune ragioni dovrei usare una tabella la cui chiave primaria è composta da più campi numerici separati, quindi non posso usare un campo autoincrement.

La soluzione che ho pensato per generare la chiave sarebbe:
SELECT MAX(id) FROM tabella FOR UPDATE;
INSERT INTO TABELLA id = $id+1 ...

(il tutto dentro una transazione)

Nel manuale parla anche di questo metodo:
UPDATE sequence SET id=LAST_INSERT_ID(id+1);
SELECT LAST_INSERT_ID();


Secondo voi si può usare qualcosa del genere anche per l'insert, in maniera più conveniente rispetto alla mia idea o esiste un altro metodo alternativo?

B) Ho necessità di gestire un numero limitato di record (diciamo 256) contemporanei.
Possono cioè esserci contemporaneamente massimo 256 record di quel tipo. Ok, uso un campo tinyint unsigned, e lo incremento.
Arrivati a 255, che si fa?
1) Continuo ad incrementare sovrascrivendo l'eventuale record con valore 1, e gestendo quindi questa sovrascrittura di conseguenza.
2) cerco uno spazio vuoto tra i 255, se lo trovo uso quello, altrimenti il "set" è pieno.

Cosa mi suggerite?
Eventuali altre ipotesi?

C)Nella tabella al punto A ho appunto la chiave primaria composta da più record. Se voglio usare questa chiave (tutta o in parte) come foreign key di altre tabelle, come ci si comporta?
Va definito un costraint per ogni colonna o uno solo per a chiave contenenente le varie colonne?

Eventuali consigli sono graditi.
Grazie.