Se a coluna da tabela do Postgres tiver o nome year
, como deve ser a INSERT
consulta para definir o valor dessa coluna?
Por exemplo: INSERT INTO table (id, name, year) VALUES ( ... );
dá um erro próximo à palavra do ano .
Se a coluna da tabela do Postgres tiver o nome year
, como deve ser a INSERT
consulta para definir o valor dessa coluna?
Por exemplo: INSERT INTO table (id, name, year) VALUES ( ... );
dá um erro próximo à palavra do ano .
Respostas:
Simplesmente coloque year
aspas duplas para impedir que seja interpretada como uma palavra - chave :
INSERT INTO table (id, name, "year") VALUES ( ... );
A partir da documentação :
Existe um segundo tipo de identificador: o identificador delimitado ou identificador entre aspas. É formado colocando-se uma sequência arbitrária de caracteres entre aspas duplas ("). Um identificador delimitado é sempre um identificador, nunca uma palavra-chave. Portanto," select "poderia ser usado para se referir a uma coluna ou tabela chamada" select ", enquanto que uma seleção não cotada seria usada como uma palavra-chave e, portanto, provocaria um erro de análise quando usada onde um nome de tabela ou coluna é esperado.
update "user" set "password" = 'value...';
funciona perfeitamente bem ...
Se você não estiver fornecendo cotações em nenhum campo / coluna, ele será minúsculo pelo Postgres por padrão. E o Postgres pulará a verificação da palavra-chave quando se trata do nome da coluna.
No seu caso, não acho obrigatório adicionar aspas no que diz respeito ao columns
. Mas se você estiver usando keywords
(registrado pelo Postgres) como o nome Table
, Schema
, Function
ou Trigger
etc., você deve ter para usar aspas duplas, quer, ou você pode especificar o nome do esquema com concatenação de ponto.
Vamos supor, order é a palavra-chave registrada pelo Postgres. E em alguns cenários, você deve usar essa palavra-chave como um nome de tabela.
Nesse momento, o Postgres permitirá que você crie uma tabela com keywords
. Essa é a beleza do Postgres.
Para acessar a tabela de pedidos, é necessário usar aspas duplas ou o nome do esquema antes do nome da tabela.
POR EXEMPLO
1
select * from schema_name.order;
2)
select * from "order";
Da mesma forma, você pode usar esse tipo de combinação. Espero que isso ajude você.
MyTable
,myTable
Emytable
são a mesma coisa. Com as aspas, essa dobra não é feita. Então"MyTable"
não é mais o mesmo quemytable
.