Sintaxe
A seguir, a sintaxe do 'Upsert' na consulta de conflito.
>> Inserir no table_name (column_list) valuse (value_list) na ação de destino do conflito;
Inicie o shell da linha de comando PostGresql
Para começar, inicie o shell da linha de comando PostgreSQL no menu do aplicativo. Conecte -o ao servidor necessário. Digite o nome do banco de dados em que deseja trabalhar. Para trabalhar em outra porta, digite o número da porta e o nome de usuário com o qual você deseja trabalhar. Para continuar com os parâmetros padrão, deixe os espaços como está e pressione 'Enter' a cada opção. Adicione uma senha para o nome de usuário selecionado e sua concha de comando deve estar pronta para usar.
Exemplo 1:
Agora, podemos começar com o 'Upsert' em conflito. Suponha que você tenha uma tabela intitulada 'Pessoa' em um banco de dados selecionado com alguns campos que mostram registros de diferentes pessoas. Esses registros mostram os nomes das pessoas, suas idades e suas cidades e países. A tabela é exibida abaixo.
>> selecione * da pessoa;
É importante saber como um erro ou conflito pode surgir. O campo da tabela 'ID', que também é uma chave primária, contém valores de 1 a 15. Quando o usuário tenta inserir alguns registros duplicados na tabela, o conflito ocorre.
Vamos tentar a seguinte declaração de inserção, inserindo os registros na tabela 'pessoa'. Esta consulta causará um erro porque o valor '3' do campo 'ID' já existe na tabela.
>> Insira na pessoa (id, nome, idade, cidade, país) valores ('3', 'habib', '45', 'chakwal', 'paquistão');
Exemplo 2: UpSert com a cláusula de conflito
Usaremos a cláusula de conflito no conflito para evitar a consulta de inserção que está causando esse erro devido à inserção dos registros duplicados. O comando de conflito vem com duas frases com diferentes usos.
Exemplo 3: Apoiar a cláusula de não fazer nada
Neste exemplo, veremos a cláusula do Do Nothing. Esta cláusula elabora que nenhuma operação será realizada após erro ou conflito. Em outras palavras, esta cláusula apenas evitará conflitos ou erros.
Então, vamos tentar o mesmo comando de inserção que usamos anteriormente para adicionar registros duplicados à tabela 'pessoa', com algumas alterações anexadas. Adicionamos a cláusula On Conflict, juntamente com a declaração do Do Nothing nesta cláusula. A cláusula de conflito ON foi aplicada à coluna exclusiva 'ID'. Isso significa que, quando o usuário tenta inserir o valor duplicado na coluna 'ID', evita o conflito e não fará nada. Como você pode ver na imagem abaixo, ela nem inserirá o novo registro na tabela, nem atualizará o registro anterior.
>> Insira na pessoa (id, nome, idade, cidade, país) valores ('3', 'habib', '45', 'chakwal', 'paquistão') em conflito (id) não faça nada;
Vamos verificar a tabela 'pessoa' novamente para o bem da autenticidade. Como você pode ver na imagem abaixo, nenhuma alteração foi feita na mesa.
>> selecione * da pessoa;
Exemplo 2: Aproveitar com a cláusula
Em seguida, examinaremos o conflito e fazer cláusulas. Como o seu nome indica, a cláusula ___ executará uma ação por erro ou conflito quando um valor duplicado é inserido em uma tabela. Usaremos o mesmo comando Insert que usamos anteriormente para inserir um registro duplicado na tabela 'Pessoa', com uma pequena alteração. Adicionamos a cláusula de conflito no conflito com a cláusula do DO. Quando o usuário tenta inserir o valor não único na coluna 'ID', ele executará uma ação para evitar o conflito. Estamos usando a cláusula de atualização após a cláusula DO, que indica uma atualização para os dados na tabela 'pessoa'. A palavra -chave definida é usada para definir o valor da coluna 'Nome' para o novo valor, 'Habib', usando a palavra -chave excluída onde o 'id' é '3' na hora atual. Se você executar a seguinte consulta, verá que a consulta foi realizada.
>> Insira na pessoa (id, nome, idade, cidade, país) valores ('3', 'habib', '45', 'Chakwal', 'Paquistão') no conflito (id) faça o nome do conjunto de atualizações = excluído.nome;
Os registros da tabela 'pessoa' devem ser buscados para ver as mudanças na consulta acima. Se você executar a seguinte consulta no shell da linha de comando, verá a saída subsequente.
>> selecione * da pessoa;
Como você pode ver na saída abaixo, o nome da pessoa foi atualizado para 'Habib', onde o 'id' é '3.'
Você também pode atualizar os registros em mais de uma coluna usando a palavra -chave excluída na cláusula On Conflict da Inserção, como mostrado abaixo.
>> Insira na pessoa (id, nome, idade, cidade, país) valores ('3', 'habib', '45', 'Chakwal', 'Paquistão') no conflito (id) faça o nome do conjunto de atualizações = excluído.nome, cidade = excluído.cidade;
As mudanças são mostradas abaixo.
>> selecione * da pessoa;
Conclusão
Este artigo mostrou como usar o 'Upsert' do PostGresql com a cláusula On Conflict, junto com o Do e não faça ações. Depois de ler este artigo, esperamos que você ache mais fácil entender como usar o postgreSql 'upsert.'