Vorrei aggiornare delle tabelle mysql verificando se il campo esiste già...e se non esiste aggiungerlo!
Mi spiego meglio!
La mia tabella ha i seguenti campi:

codice:
CREATE TABLE `campimaschera` (
  `id` tinyint(4) unsigned NOT NULL auto_increment,
  `idmaschera` tinyint(4) unsigned NOT NULL default '0',
  `nomemaschera` varchar(128) collate latin1_bin NOT NULL default '',
  `campo` varchar(7) collate latin1_bin NOT NULL default '',
  `nomecampo` varchar(255) collate latin1_bin default NULL,
  `tipocampo` varchar(16) collate latin1_bin default NULL,
  `opzioni` text collate latin1_bin,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1;
e all'interno posso avere i seguenti dati:

codice:
INSERT INTO `campimaschera` (`id`, `idmaschera`, `nomemaschera`, `campo`, `nomecampo`, `tipocampo`, `opzioni`) VALUES
(1, 1, 'Progettazione', 'campo1', 'Oggetto', 'text', ''),
(2, 1, 'Progettazione', 'campo2', 'Protocollo', 'text', ''),
(3, 1, 'Progettazione', 'campo3', 'Data', 'data', ''),
(4, 1, 'Progettazione', 'campo4', 'Destinatario', 'text', ''),
(5, 1, 'Progettazione', 'campo5', '', '', ''),
(6, 1, 'Progettazione', 'campo6', '', '', ''),
(7, 1, 'Progettazione', 'campo7', '', '', ''),
(8, 1, 'Progettazione', 'campo8', 'Ubicazione', 'text', ''),
(9, 2, 'Amministrazione Fatture Attive', 'campo1', 'Denominazione Cliente', 'text', ''),
(10, 2, 'Amministrazione Fatture Attive', 'campo2', 'C.F. Cliente', 'text', ''),
(11, 2, 'Amministrazione Fatture Attive', 'campo3', 'Partita IVA Cliente', 'number', ''),
(12, 2, 'Amministrazione Fatture Attive', 'campo4', 'Data Fattura', 'data', ''),
(13, 2, 'Amministrazione Fatture Attive', 'campo5', 'Numero Fattura', 'number', ''),
(14, 2, 'Amministrazione Fatture Attive', 'campo6', 'Oggetto fornitura/prestazioni', 'text', ''),
(15, 2, 'Amministrazione Fatture Attive', 'campo7', 'Importo', 'valuta', ''),
(16, 2, 'Amministrazione Fatture Attive', 'campo8', 'Ubicazione', 'text', ''),
(17, 3, 'Amministrazione Fatture Passive', 'campo1', 'Denominazione Fornitore', 'text', ''),
(18, 3, 'Amministrazione Fatture Passive', 'campo2', 'C.F. Fornitore', 'text', ''),
(19, 3, 'Amministrazione Fatture Passive', 'campo3', 'Partita IVA Fornitore', 'number', ''),
(20, 3, 'Amministrazione Fatture Passive', 'campo4', 'Data Fattura', 'data', ''),
(21, 3, 'Amministrazione Fatture Passive', 'campo5', 'Numero Fattura', 'number', ''),
(22, 3, 'Amministrazione Fatture Passive', 'campo6', 'Oggetto fornitura/prestazioni', 'text', ''),
(23, 3, 'Amministrazione Fatture Passive', 'campo7', 'Importo', 'valuta', '');
ORA CIO' CHE DOVREI FARE E' AD ESEMPIO AGGIORNARE I DATI CHE CI SONO, E SE UN CAMPO NON ESISTE AGGIUNGERLO!!!

Oh trovato l'opzione INSERT ... ON DUPLICATE KEY UPDATE ma non mi funziona.... ho provato a fare questo INSERT :

codice:
INSERT INTO campimaschera (idmaschera, nomemaschera, campo, nomecampo, tipocampo, opzioni) VALUES (3, 'Amministrazione Fatture Passive', 'campo7', 'Ubicazione / Responsabile', 'text', '') ON DUPLICATE KEY UPDATE idmaschera = 3 AND campo = 'campo7';

INSERT INTO campimaschera (idmaschera, nomemaschera, campo, nomecampo, tipocampo, opzioni) VALUES (30, 'Segreteria Generale', 'campo10', 'Ubicazione / Responsabile', 'text', '') ON DUPLICATE KEY UPDATE idmaschera = 30 AND campo = 'campo10';
nel primo caso dovrebbe aggiornare la riga con idmaschera = 3 e il campo = campo7
mentre nel secondo caso dovrebbe aggiungere il campo10
ma non funziona nessuna delle 2

Qualcuno ha qualche idea da suggerire?