INSERT
Talvez o INSERT seja o segundo comando SQL mais conhecido, perdendo apenas para o SELECT. Ele insere novos registros em uma tabela existente. Caso o INSERT esteja tentando inserir um registro que tenha a mesma chave primária (primary key) ou índice único (unique index) de outro já existente na tabela, ocorre um erro chamado erro de chave duplicada (duplicate-key error) e a execução é abortada.
Se esse erro ocorrer no meio de um script SQL, a execução do script é abortada.
REPLACE
Funciona exatamente como o INSERT, porém se o registro que está sendo inserido tem a mesma chave primária (primary key) ou índice único (unique index) de outro já existente na tabela, esse registro já existente é apagado antes do novo ser inserido. E não ocorre erro.
INSERT IGNORE
A cláusula IGNORE altera um pouco o comportamento do INSERT:Se o registro que está sendo inserido tem a mesma chave primária (primary key) ou índice único (unique index) de outro já existente na tabela, o INSERT IGNORE é ignorado e não ocorre erro.
Tentativas de inserir registros com valores inválidos não causam erros. Os valores serão ajustados para valores mais aceitáveis e inseridos. Warnings são produzidos, mas a execução não é abortada.
Resumindo
DELETE FROM `table`;INSERT INTO `table` (`id`, `name`) VALUES (1, "Adriana");
INSERT INTO `table` (`id`, `name`) VALUES (1, "Pedro");
INSERT INTO `table` (`id`, `name`) VALUES (2, "Rafael");O primeiro INSERT será executado, o segundo dará erro e a execução será abortada (pois já foi inserido um registro com id = 1), o terceiro nem será executado.
Resultado:
+----+---------+ | id | name | +----+---------+ | 1 | Adriana | +----+---------+
DELETE FROM `table`;
REPLACE INTO `table` (`id`, `name`) VALUES (1, "Adriana");
REPLACE INTO `table` (`id`, `name`) VALUES (1, "Pedro");
REPLACE INTO `table` (`id`, `name`) VALUES (2, "Rafael");O primeiro REPLACE será executado inserindo normalmente o registro como o INSERT faria. O segundo apagará o registro com id = 1 e adicionará outro registro com id = 1 sem erros. O terceiro REPLACE também será executado normalmente.
Resultado:
+----+--------+ | id | name | +----+--------+ | 1 | Pedro | | 2 | Rafael | +----+--------+
DELETE FROM `table`;
INSERT IGNORE INTO `table` (`id`, `name`) VALUES (1, "Adriana");
INSERT IGNORE INTO `table` (`id`, `name`) VALUES (1, "Pedro");
INSERT IGNORE INTO `table` (`id`, `name`) VALUES (2, "Rafael");O primeiro INSERT IGNORE vai inserir o registro exatamente como o INSERT sozinho faria. O segundo vai tentar inserir outro registro, mas como a chave está duplicada, será ignorado sem erros. O terceiro INSERT IGNORE também será executado normalmente.
Resultado:
+----+---------+ | id | name | +----+---------+ | 1 | Adriana | | 2 | Rafael | +----+---------+

0 comentários:
Postar um comentário