[HELPme] UPDATE se já existir... em mySQL

STronic

Power Member
Boas ;)

preciso de uma ajudinha....

Estou a tentar criar uma forma de converter tabelas DBF para mySQL, a integração tudo bem.. já está feita...

o meu problema está nas alterações... ou seja...

quando tenho uma linha nova no DBF ele insere correctamente...
como fazer se uma linha for alterada para que ele altere também no SQL ?

o SQL servirá apenas de Consulta sendo os dados importados de ficheiros DBF ;)


uma das tabelas é:

PHP:
CREATE TABLE `funcionarios` (
  `cartao` int(14) default NULL,
  `numero` int(4) NOT NULL default '0',
  `nome` varchar(50) default NULL,
  `categoria` varchar(20) default NULL,
  `seccao` varchar(20) default NULL,
  `cacifo` varchar(5) default NULL,
  `loja` varchar(10) default NULL,
  `admissao` date default NULL,
  `msg` varchar(40) default NULL,
  `nascimento` date default NULL,
  `ponto` varchar(1) default NULL,
  PRIMARY KEY  (`numero`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
em que para inserir tenho:

PHP:
$sql = mysql_query("INSERT IGNORE INTO funcionarios(cartao, numero, nome, categoria, seccao, cacifo, loja, admissao, msg, nascimento, ponto) VALUES('$cartao','$numero','$nome','$categoria','$seccao','$cacifo','$loja','$admissao','$msg','$nascimento','$ponto')") or die('Erro no SQL: ' . mysql_error());
o que preciso de fazer para que este comando altere os valores para uma linha já existente mas com valores alterados? sem duplicar linhas

thanks ;)
 
Pegando no exemplo:

Código:
UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'
TRaduzindo fica
Código:
Actualizar Pessoa
Definir Endereço = 'Stien 12', Cidade = 'Stavanger'
Onde UltimoNome =  'Rasmussen'
...ou seja, Para actualizares uma tabela, primeiro tens que definir qual a tabela em questao (PERSON), de seguida defines os novos valores (
SET Address = 'Stien 12', City = 'Stavanger') e quando é que estes valores devem ser actualizados (WHERE LastName = 'Rasmussen')

se nao tiveres percebido, ja sabes->reply

edit: vais ter sempre que contemplar o Insert e o Update, penso eu de que...
 
Última edição:
até aí eu percebi ;)

mas...
terei de usar o INSERT para novas linhas no DBF e o UPDATE para actualizar as existentes?

ou
existe algum comando que contemple as 2 opções?

obg pela ajuda ;)
 
já agora fica aqui o SQL
Código:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] [I]tbl_name[/I] [([I]col_name[/I],...)]
    {VALUES | VALUE} ({[I]expr[/I] | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      [I]col_name[/I]=[I]expr[/I]
        [, [I]col_name[/I]=[I]expr[/I]] ... ]
 
tentei com isto:

Código:
INSERT INTO table (a,b,c,d,e) VALUES (1,2,3,4,5) ON DUPLICATE KEY UPDATE VALUES(b,c,d,e);

mas tb nao deu....

Código:
Erro no SQL: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES('*','*','********* ','********' at line 1
 
Back
Topo