2010-03-18 22 views
7

Vorrei aggiungere attributi personalizzati a una tabella MySQL che posso leggere tramite php.Aggiunta di attributi di metadati alla tabella MySQL

Questi attributi non interferiscono con la tabella stessa - sono principalmente accessibili dal codice php durante la generazione del codice e questi attributi DEVONO risiedere nel DB stesso.

Qualcosa di simile nel concetto di riflessione .NET.

MySQL supporta qualcosa di simile?

Grazie.

risposta

5

Quando si CREATE o ALTER una tabella, è possibile aggiungere COMMENTS - uno per la tabella nel suo complesso e uno per ogni colonna. Per recuperare questi commenti, è possibile interrogare il database INFORMATION_SCHEMA, in particolare le colonne INFORMATION_SCHEMA.COLUMNS.COLUMNS_COMMENT e INFORMATION_SCHEMA.TABLE.TABLE_COMMENTS. INFORMATION_SCHEMA fornisce molti metadati sui database, inclusi i dati forniti dalle istruzioni DESCRIBE. Qualsiasi utente che abbia accesso in lettura a una determinata tabella o colonna può leggere i rispettivi metadati da INFORMATION_SCHEMA, ma non può leggere i metadati relativi alle tabelle per cui non hanno accesso in lettura.

Sembra naturale memorizzare i metadati personalizzati in INFORMATION_SCHEMA, ma non è così flessibile come potrebbe essere necessario perché è possibile memorizzare solo uno COMMENT per colonna. Se ciò è restrittivo per il tuo scopo o devi aggiornare regolarmente i dati, dovresti seguire @Dark Falcon e creare una tabella aggiuntiva.

1

Che tipo di attributi? Dal momento che menzioni la riflessione, presumo tu stia cercando di scoprire qualcosa sulla struttura del tavolo? Ti sei reso conto che i comandi che ti dicono della struttura della tabella sono SQL e restituiscono i risultati come qualsiasi altra query? Ciò ti consente di elaborare in modo progressivo i risultati di, ad esempio, DESCRIBE TABLE. E 'questo quello che stai cercando?

+0

Desidero aggiungere le mie informazioni all'elenco che DESCRIBE TABLE restituisce. I miei attributi CUSTOM. – Jack

+0

In breve e breve è più o meno: "Non puoi". Mantieni una tabella separata con colonne per table_name, field_name, attribute_name, ecc. –

Problemi correlati