No que se refere aos sistemas gerenciadores de banco de dado...

Próximas questões
Com base no mesmo assunto
Q328231 Banco de Dados
No que se refere aos sistemas gerenciadores de banco de dados livres, julgue os itens que se seguem.


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
Alternativas

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.html

Alé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