标签: quoted-identifier

Postgres:关系不存在错误

我使用 pg_restore 用转储文件加载我的 postgres 数据库。我与我的用户连接到我的数据库:

sudo -u arajguru psql dump

select current_user;
 current_user 
--------------
 arajguru
Run Code Online (Sandbox Code Playgroud)

现在我能够看到所有新创建的表:

dump=> \dt
               List of relations
 Schema |       Name        | Type  |  Owner   
--------+-------------------+-------+----------
 public | Approvals         | table | arajguru
 public | Approvers         | table | arajguru
 public | Conditions        | table | arajguru
 public | Entities          | table | arajguru
 public | EntityDefinitions | table | arajguru
 public | Projects          | table | arajguru
 public | Rules             | table | arajguru
 public | …
Run Code Online (Sandbox Code Playgroud)

postgresql quoted-identifier

18
推荐指数
1
解决办法
11万
查看次数

列名可以是 PostgreSQL 或任何数据库中的“组”

我正在设计一个项目,该项目指定表中的列名应该是什么,规范中的列名之一是“组”。

我尝试创建它,但它总是在单词 = 附近抛出语法错误"group"。我真的很好奇,因为 SQL 中的关键字是“group by”而不是 group,所以是什么原因,我无法重命名或创建带有名称的列"group".

我正在使用和得到的语法和错误:

ALTER TABLE test RENAME COLUMN sum TO group;
ERROR:  syntax error at or near "group"
LINE 1: ALTER TABLE test RENAME COLUMN sum TO group;
Run Code Online (Sandbox Code Playgroud)

postgresql syntax postgresql-9.2 quoted-identifier

7
推荐指数
1
解决办法
2万
查看次数

为什么根据 SQL-92,未加引号的标识符是大写的?

SQL-92 标准的第 5.6 节包含规则 10...13,其中未加引号的标识符应大写,因此foo变为FOO"foo"仍然是foo

例如,Oracle、IBM DB2、SnowflakeksqlDB遵守这些规则,但Postgres 、MySQL 或 SQLite 则不遵守这些规则。

问题是,为什么?根据我的理解,在具有大量关键字的语言中可选地引用标识符是有意义的。标识符一致的区分大小写或不区分大小写也是有意义的。但让它依赖于被引用的标识符看起来并不合理。

我缺少什么?

syntax sql-standard case-sensitive quoted-identifier

6
推荐指数
2
解决办法
881
查看次数

在哪里放单引号?

我正在尝试执行以下语句,该语句创建一个名为 service2019 的数据库:

DECLARE @dbname VARCHAR(50);
SET @dbname = 'service' + CAST(YEAR(GETDATE()) AS VARCHAR(4));


EXEC (
'CREATE DATABASE ' + @dbname  + ' ON  PRIMARY 
( NAME =' + '' + @dbname +'' + ', FILENAME = ''C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQL2014TEST\MSSQL\DATA\''' + '''' + @dbname + '''' + '''.mdf'''  + ', SIZE = 10MB , MAXSIZE = UNLIMITED, FILEGROWTH = 100KB )
 LOG ON 
( NAME =' + '' + @dbname + '_log' + ', FILENAME = ''C:\Program Files\Microsoft SQL …
Run Code Online (Sandbox Code Playgroud)

sql-server dynamic-sql t-sql sql-server-2014 quoted-identifier

0
推荐指数
1
解决办法
68
查看次数