在 Postgres 中,Advisory Locks特性提供了在数据库服务器中集中管理的任意应用程序定义的锁。这些锁与表或行等无关。
Microsoft SQL Server 是否提供类似这些建议锁的功能?
Microsoft SQL Server 通过sp-getapplock命令和相关命令提供任意应用程序定义的锁定机制。
键, or resource_name,被指定为一个字符串,一个 varchar 255。但文档还提到键/名称是散列的。
所以这让我想知道:
我正在为特殊需求应用程序的许多表的行实施悲观锁定机制。作为我的应用锁键/名称,我计划使用一个代表每个表的数字与存储在每一行中的 ID 号相结合。示例键/名称可能类似于mydb_myschema_table0000000142_row0000241738. 我可能一次有许多活动,所以我需要了解这些限制。
我可以阻止 DROP COLUMN 在 PostgreSQL 9 或 10 或更高版本中的特定表上成功吗?
我的应用程序对列永远存在而不是消失做了一些假设。我怕后来的程序员忘记这个约束。
我知道触发器可以触发来控制行的插入、修改和删除。但是DDL呢?我可以防止表结构发生某些变化吗?
安全可能是一种方式,为用户和角色分配权限。但是这些未来的程序员将被允许添加列,只禁止删除列。
我不担心恶意活动。我正在防御那些可能行动太快而无法记住大局的急切海狸。
沿着这个相关问题的思路:
是否有任何有效的实际使用用例 TIME WITH TIME ZONE或应该将其视为反模式?
需要明确的是:我问的是TIME…,而不是TIMESTAMP…。
Postgres 咨询公司的这篇博文提到 Postgres 11 中新的服务器端过程支持将能够返回多个结果集。
? 这个特性确实出现在 Postgres 11 版本中吗?
如果是这样,你能简单解释一下它是如何工作的吗?显示一些代码示例?
Postgres 10 带来了 SQL 标准GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY特性的实现,松散地称为标识列。这个特性取代了 Postgres 自己的SERIAL伪类型,消除了它的问题/问题。有关更多信息,请参阅此处和此处。
GENERATED…优于的主要原因之一SERIAL是序列号生成器在后台透明处理。我们可以添加列、调整当前序列号和删除列,所有这些都无需明确引用序列。
CREATE TABLE tbl (
col BIGINT
GENERATED ALWAYS AS IDENTITY
PRIMARY KEY ,
col2 text
)
;
Run Code Online (Sandbox Code Playgroud)
和…
ALTER TABLE tbl
ALTER COLUMN col
RESTART WITH 1000
;
Run Code Online (Sandbox Code Playgroud)
和…
ALTER TABLE tbl
ALTER COLUMN col
DROP IDENTITY IF EXISTS
;
Run Code Online (Sandbox Code Playgroud)
或者…
ALTER TABLE tbl
ALTER COLUMN col
DROP COLUMN IF EXISTS …Run Code Online (Sandbox Code Playgroud) 与此相同的问题:How to edit postgresql.confwith pgAdmin 3? 但更新为全新的(完全重写)pgAdmin 4。
\xe2\x9e\xa5 如何使用pgAdmin 4应用程序编辑配置文件?
\n\n我添加了adminpack扩展,如此处所述。我重新启动了pgAdmin 4。然而我无法识别任何菜单项或其他界面项来编辑此文件。
\nEnterpriseDB.com 向社区提供的Postgres 安装程序通常会在macOSpostgres上创建一个用户帐户。
在Terminal.app的控制台会话中,我需要切换到该用户。我的目标是使用该 user\xe2\x80\x99s 权限运行文本编辑器,以便我可以编辑pg_hba.conf控制 Postgres 用户身份验证规则的文件。
当我尝试时:
\n\nsu - postgres\nRun Code Online (Sandbox Code Playgroud)\n\n\xe2\x80\xa6 系统提示我输入用户密码,我输入成功,但收到错误消息:
\n\n\n\n\n苏:对不起
\n
我确信密码是正确的。我可以做什么来访问该postgres用户?
我的 Java 源代码有点卡在这里。首先我想从数据库中完全删除它,因为我想重新编译它,但我不能删除它,因为如果我执行这个命令:
drop java source "SCHEMA.JAVASOURCENAME";
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ORA-04043: object JAVASOURCENAME does not exist
Run Code Online (Sandbox Code Playgroud)
Javasource 本身具有这种结构(这是它的 plsql/java 代码):
create or replace and compile java source named myjavasource as
import java.io.*;
import some.custom.jar.one.*;
import some.custom.jar.two.*;
import some.custom.jar.three.*;
public class MyJavaClass
{
public static String myjavafunction(String connectString, String identity, String password)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我以 DBA 身份和我的用户执行了这个“创建或替换和编译 java 源代码...”命令,我不知道这是否可能是问题所在。
所以我的问题是,我怎样才能删除这个 java 源代码?
我的第二个问题是我可以处理自定义 jars 吗?我用这个命令导入了它们:
call dbms_java.loadjava('-genmissing -r -v -force -grant SCHEMA ./some.custom.jar.one.jar');
Run Code Online (Sandbox Code Playgroud)
我还以 DBA 身份和我的用户执行了此操作。如果是检查无效对象:
SELECT *
FROM user_objects
WHERE …Run Code Online (Sandbox Code Playgroud)