No que se refere aos sistemas gerenciadores de banco de dado...
No PostgreSQL, é possível atualizar um campo do banco de dados usando-se o comando a seguir. UPDATE a,b SET a.id=b.id WHERE a.f2 = b.f2
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa correta: E - errado
O comando UPDATE
no PostgreSQL é utilizado para atualizar registros em uma tabela. No entanto, a questão apresenta uma sintaxe que não é suportada pelo PostgreSQL. A tentativa de atualizar simultaneamente duas tabelas com a sintaxe UPDATE a,b SET a.id = b.id WHERE a.f2 = b.f2
não é válida neste sistema de gerenciamento de banco de dados (SGBD).
No PostgreSQL, para fazer uma atualização que envolva mais de uma tabela, você precisaria fazer uso de um subselect, JOIN ou uma combinação de operações de CTE (Common Table Expressions) para alcançar o resultado desejado. Uma maneira de realizar uma atualização que envolva múltiplas tabelas seria utilizando um FROM
no comando UPDATE
, algo como:
UPDATE tabela_a SET coluna = valor
FROM tabela_b
WHERE tabela_a.referencia = tabela_b.referencia;
Essa abordagem permite que você atualize a "tabela_a" com base em valores da "tabela_b". A condição de correspondência, o WHERE
, especifica como as linhas das duas tabelas estão relacionadas.
O entendimento correto da sintaxe e das capacidades do PostgreSQL é crucial para trabalhar eficientemente com esse SGBD em um ambiente de produção, bem como para ter sucesso em provas de concurso público que cobrem esse conteúdo.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
medo de colocar certa
SQL é foda
cada banco aceita uma bizarrice diferente do outro
ERRADO!
Esse é um tipo de update com join natural. Funciona no mysql mas não no PostgreSql.
Segue exemplo de update com join, de acordo com a doc do site PostgreSql:
UPDATE employees
SET sales_count = sales_count + 1
FROM accounts
WHERE
accounts.name = 'Acme Corporation'
AND
employees.id = accounts.sales_person;
link: http://www.postgresql.org/docs/8.1/static/sql-update.htmlAlém do erro citado pelo colega Marcondes, há um erro de sintaxe. A cláusula UPDATE necessita da especificação da tabela que deseja-se fazer a atualização. No comando da questão ela ignorou a tabela e já pulou direto para o SET.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo