我在哪里可以找到有关PostgreSQL命名约定的详细手册?(表名与驼峰案例,序列,主键,约束,索引等......)
简单的问题,是否有任何方法可以省略PostgreSQL中的双引号?
这是一个例子,给予select * from A;,我将检索ERROR: relation "a" does not exist,我将不得不给予select * from "A";获得真实的结果.
有没有办法不做第二次而是在PostgreSQL上做第一次?
我最近尝试用大写名称在PostgreSQL中创建一些表.但是为了查询它们,我需要将表名放在"TABLE_NAME"中.有没有办法避免这种情况并告诉postgres正常使用大写名称?
UPDATE
此查询创建一个小写table_name的表
create table TABLE_NAME
(
id integer,
name varchar(255)
)
Run Code Online (Sandbox Code Playgroud)
但是,此查询创建一个大写名称为"TABLE_NAME"的表
create table "TABLE_NAME"
(
id integer,
name varchar(255)
)
Run Code Online (Sandbox Code Playgroud)
问题是报价是现在名称的一部分!! 在我的情况下,我不手动创建表,另一个应用程序创建表,名称是大写字母.当我想通过Geoserver 使用CQL过滤器时,这会导致问题.
我在Windows XP下运行ActiveState的ActivePython 2.6.5.12和PostgreSQL 9.0 Beta 1.
如果我创建一个带有大写首字母的表(即Books),当我运行select语句时,psycopg2会返回"Programming Error:relation"书籍"不存在"错误消息:execute("SELECT * FROM Books").如果我运行,则会返回相同的错误:execute("SELECT * FROM books").但是,如果我将表更改为小写的第一个名称(即书籍),则上述任一语句都可以.
表名是否应该具有小写的名字?这是设置或功能还是错误?我错过了一些明显的东西吗
这让我摸不着头脑。有一个类似的问题可能与“函数不存在”有关,但我真的认为它确实存在并且PostgreSQL 函数不存在但答案似乎不是很明显。PostgreSQL 9.5。
我有一个基于 Npgsql 的成员资格查询,如下所示:
using (var conn = new NpgsqlConnection(ConnectionString))
{
conn.Open();
using (var comm = new NpgsqlCommand("get_user_by_username", conn))
{
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add("_user_name", NpgsqlDbType.Varchar, 250).Value = username;
comm.Parameters.Add("_application_name", NpgsqlDbType.Varchar, 250).Value = _ApplicationName;
comm.Parameters.Add("_online", NpgsqlDbType.Boolean).Value = userIsOnline;
using (var reader = comm.ExecuteReader())
{
return GetUsersFromReader(reader).OfType<MembershipUser>().FirstOrDefault();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这个函数存在于我的 postgresql 数据库中:
CREATE OR REPLACE FUNCTION public.get_user_by_username(
_user_name character varying,
_application_name character varying,
_online boolean)
RETURNS SETOF user_record AS
$BODY$begin
if _online then
return …Run Code Online (Sandbox Code Playgroud)