小编Tho*_*mas的帖子

授予对postgresql中视图的访问权限

我在postgresql中有一个名为testview的视图.

我创建了一个名为testuser的新用户.

我希望testuser拥有数据库中所有表和视图的所有权限.

为此,我运行了以下命令:

GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;

GRANT USAGE ON SCHEMA public TO testuser;

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO testuser;
Run Code Online (Sandbox Code Playgroud)

testuser现在可以访问数据库中的所有表,但是如果我尝试运行SELECT*FROM testview,我会收到以下错误:关系testview的权限被拒绝.

怎么了?testuser如何访问testview?

postgresql

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

更新表使用另一个查询的结果

我有以下查询工作正常

SELECT RecordID, ROW_NUMBER() OVER (ORDER BY (Value1) DESC) AS Rank
FROM Table1
Run Code Online (Sandbox Code Playgroud)

另外,我有另一个表(table2),其中包含(其中包括)RecordID和Rank字段.我想根据上面的查询结果更新table2中的RecordID和Rank.那可能吗?

sql postgresql join sql-update

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

GET DIAGNOSTICS ROW_COUNT 并发语句

我想GET DIAGNOSTICS integer_var = ROW_COUNT在 plpgsql 代码中使用INSERT INTO语句来获取插入到表中的行数。

如果我INSERT INTO几乎同时运行多个语句,我可以确定GET DIAGNOSTICS为每个语句正确返回插入的行数吗?

我可以用一个例子来说明这一点,如果这按以下顺序发生:

  1. 用户 A 运行 insert into 语句,将 10 行插入到表中。
  2. 用户 B 运行 insert into 语句,将 5 行插入到表中。
  3. 用户 A 呼叫 GET DIAGNOSTICS rowcount = ROW_COUNT;
  4. 用户 B 呼叫 GET DIAGNOSTICS rowcount = ROW_COUNT;

用户 A 会得到rowcount10 分而用户 B 会得到 5 分吗?或者两者都会得到5?

postgresql concurrency plpgsql transaction-isolation

3
推荐指数
1
解决办法
4505
查看次数

使用不带花括号的语句

我正在查看 Npgsql 入门示例,但很难理解 using 语句的用法。

var connString = "Host=myserver;Username=mylogin;Password=mypass;Database=mydatabase";

await using var conn = new NpgsqlConnection(connString);
await conn.OpenAsync();

// Insert some data
await using (var cmd = new NpgsqlCommand("INSERT INTO data (some_field) VALUES (@p)", conn))
{
 cmd.Parameters.AddWithValue("p", "Hello world");
 await cmd.ExecuteNonQueryAsync();
}
Run Code Online (Sandbox Code Playgroud)

为什么要在 conn 变量的声明中添加“using”?

await using var conn = new NpgslConnection(connString);
Run Code Online (Sandbox Code Playgroud)

另外,由于没有大括号,为什么在下一行插入数据时 conn 在使用之前没有被释放?

await using (var cmd = new NpgsqlCommand("INSERT INTO data (some_field) VALUES (@p)", conn))
Run Code Online (Sandbox Code Playgroud)

什么时候会处理掉?

c#

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