Semanticamente, REPLACE INTO combina as operações exclua e INSERT: o comando substitui uma linha existente quando a chave primária corresponde ou insere uma nova linha caso não haja correspondência.
Sintaxe
REPLACE INTO table_name [(column_name,...)] VALUES ({Constant|NULL|DEFAULT},...),(...),...
Parâmetros
|
Parâmetro |
Descrição |
||
|
|
Tabela de destino. |
||
|
|
(Opcional) Colunas a serem preenchidas. Se omitido, os valores serão inseridos em todas as colunas seguindo a ordem definida. |
||
|
|
NULL |
DEFAULT` |
Valor para cada coluna: uma constante literal, |
A chave primária pode ser composta por uma única coluna ou abranger múltiplas colunas (chave primária composta).
Funcionamento
Ao executar REPLACE INTO, o sistema verifica se já existe uma linha com a mesma chave primária:
Linha existente — o sistema exclui a linha atual e insere a nova.
Linha inexistente — o sistema insere a linha diretamente.
Exemplos
Inserir uma única linha com nomes de colunas
REPLACE INTO customer(customer_id,customer_name,phone_num,city_name,sex,id_number,home_address,office_address,age,login_time)
VALUES
(002367,'Bob','13900001234','Hangzhou',0,'987300','WestLake','CloudTown',23,'2018-03-02 10:00:00');
Inserir várias linhas sem nomes de colunas
Omita a lista de colunas ao fornecer valores para todas elas na ordem definida.
REPLACE INTO customer VALUES
(002367,'John','13900001111','Hangzhou',0,'987300','WestLake','CloudTown',23,'2018-03-02 10:00:00'),
(002368,'Adam','13900002222','Hangzhou',0,'987300','WestLake','CloudTown',28,'2018-08-01 11:00:00'),
(002369,'Brook','13900003333','Hangzhou',1,'987300','WestLake','CloudTown',35,'2018-09-12 08:11:00');