小编Ham*_*one的帖子

Npgsql 4.0 参数和空值

使用 Npgsql 传递空值看起来像这样:

using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", conn))
{
    cmd.Parameters.Add(new NpgsqlParameter("TEST", NpgsqlDbType.Varchar));
    cmd.Parameters[0].Value = DBNull.Value;

    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

哪个工作正常。

新的 Npgsql 4.0 文档建议使用强数据类型声明参数,如下所示:

using (NpgsqlCommand cmd = new NpgsqlCommand("insert into foo values (:TEST)", conn))
{
    cmd.Parameters.Add(new NpgsqlParameter<string>("TEST", NpgsqlDbType.Varchar));
    cmd.Parameters[0].Value = DBNull.Value;

    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

当传递 DBNull.Value 时,会抛出一般异常:

无法将“System.DBNull”类型的对象转换为“System.String”类型。

一切仍然适用于新的无装箱参数,但新语法似乎有意义,我们想使用它......但如何解决这种数据类型断开连接?

上面的例子是一个字符串。我认为这也会影响数字和日期。

c# postgresql npgsql

10
推荐指数
1
解决办法
8653
查看次数

在 DBeaver 中将 select * 转换为单独的字段名称

我偶然发现了 DBeaver 中最令人惊奇的功能之一,在那里我有:

select *
from foo
Run Code Online (Sandbox Code Playgroud)

我点击了一些组合键,这些组合键变成*了一个单独的字段名称列表:

select field1, field2, field3, field4
from foo
Run Code Online (Sandbox Code Playgroud)

问题是无论我尝试什么,我都无法重复它,而且我找不到有关该功能的任何文档。

如果有人知道完成这项工作的组合键,请告诉我。

sql select dbeaver

6
推荐指数
1
解决办法
840
查看次数

可以在 PostgreSQL 的主键上使用 BRIN 索引

我正在阅读 PostgreSQL 中的 BRIN 索引,它似乎对我们使用的许多表都有好处。

也就是说,它很好地适用于已经是主键的列,在这种情况下,添加单独的索引将抵消索引的部分好处,即节省空间。

PK 是隐式索引的,不是吗?关于这一点,假设 Btree 也是隐式的,是否可以使用 BRIN 而不是 Btree 来完成?

我试过了,正如预期的那样,它不起作用:

create table foo (
  id integer,
  constraint foo_pk primary key using BRIN (id)
)
Run Code Online (Sandbox Code Playgroud)

所以,两个问题:

  1. 可以在 PK 上使用 BRIN 索引吗?
  2. 如果没有,如果我同时拥有 PK 和单独的 BRIN 索引(如果性能对我来说比空间更重要),规划者会选择两者中更合适的一个吗?

当然,我对此的理解可能不完整,在这种情况下,我将不胜感激。

postgresql indexing primary-key

6
推荐指数
1
解决办法
686
查看次数

如何在不使用 ROW_NUMBER() 的情况下模拟 ROW_NUMBER() 功能?

我在练习中遇到了这个问题,它让我发疯,我无法修复它......基本上我使用的是 SQLLite,所以我只能使用任何窗口函数来获得结果,而且更痛苦部分原因是已创建的架构上没有唯一的 id。参见示例:

**Name,  DateAdded,  Amount**
John,  2015-10-12, 100.00
John,  2015-10-15, 50.00
Aaron, 2015-09-20, 10.00
Paul,  2014-12-20, 24.00
Paul,  2015-12-23, 32.00
Run Code Online (Sandbox Code Playgroud)

当您没有任何唯一的 id 可供参考时,在 SQL Lite 中使用 ROW_NUMBER() 的替代方法是什么?我想按名称分区并按金额排序。

提前致谢。

sql sqlite

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

将用户、IP 地址添加到 PostgreSQL 日志记录

我假设我在文档中遗漏了一些简单的内容,但在我的一生中,我无法弄清楚如何在 PostgreSQL 的日志文件中添加运行查询的机器的用户 ID 和 IP 地址。pg_stat_activity一旦发生,我可以清楚地看到它,但是在对数据库问题进行事后分析时,在日志中看到这些会非常有帮助。

我怀疑这很重要,但我的服务器启动是这样的:

$BIN/pg_ctl -D /apps/pgdata9.5.0 -l /apps/logs/postgresql start
Run Code Online (Sandbox Code Playgroud)

我希望在 postgresql.conf 中有一个设置,但如果在那里它就躲过了我。

postgresql logging

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

标签 统计

postgresql ×3

sql ×2

c# ×1

dbeaver ×1

indexing ×1

logging ×1

npgsql ×1

primary-key ×1

select ×1

sqlite ×1