如何使用 PostgreSQL 在 DBeaver 中创建自动递增/SERIAL id 列?

Posted

技术标签:

【中文标题】如何使用 PostgreSQL 在 DBeaver 中创建自动递增/SERIAL id 列?【英文标题】:How to create auto incrementing / SERIAL id columns using DBeaver with PostgreSQL? 【发布时间】:2019-02-10 03:43:39 【问题描述】:

我是 PostgreSQL 和 DBeaver(社区版 5.1.6 版)的新用户,正在寻找一种方法来通过 DBeaver GUI 在表中创建自动递增的 ID 列。

从我的研究中我可以看出:

    您可以使用 SQL 轻松进行设置,例如。 id SERIAL NOT_NULL

    根本问题是没有“串行数据类型”之类的东西,而 SERIAL 等同于 nextval('table_name_id_seq')。

    当我在 SQL 中使用 SERIAL 命令创建表时,生成的 id 列在 'Default' 属性中有一个 nextval('exampletable_id_seq'::regclass') 值。

例如,我试图在新表中的 DBeaver 中的列的“默认”属性中手动输入 nextval() 命令。 nextval('mytable_id_seq') 有和没有'::regclass;。但是这不起作用。

我很欣赏在 SQL 中执行此操作会更容易,并且之前有一个问题在:Problems de Serial data type in DBeaver & PostgreSQL。

但是,我找不到令人满意的答案,并且能够通过 GUI 执行此操作的选项会很有用,尤其是在通过 DBeaver GUI 完成其他设置时。

具体来说,我的问题是:

    DBeaver 是否具有通过 GUI 添加自动递增 ID 的功能?

    如果是这样,执行此操作的步骤是什么。

非常感谢大家!

【问题讨论】:

我不清楚您的问题是什么:您可以通过 GUI 使用 SERIAL 创建一个表,但 DBeaver 不显示 serial“类型”吗?还是不能选择serial 开头? @a_horse_with_no_name Serial 可以在 DBeaver 中创建表期间选择,它确实使用 serial 作为其 CREATE 语句(至少在预览中)。我认为他希望 DBeaver 检测到该列满足serial“类型”的要求并显示它,并且不明白大多数客户不这样做,包括 DBeaver。 @ŁukaszKamiński:我也是认为的。但是“是否有添加自动递增 ID 的功能”部分似乎表明 DBeaver 不提供这种可能性 @a_horse_with_no_name 我认为他只是对客户端通常如何显示串行有点困惑,并且没有实际测试 DBeaver 创建的表是否会在类型设置为serial 的列上自动递增。它在 DBeaver 中对我很有效。 @a_horse_with_no_name 非常感谢您的回答,并对问题的混淆感到抱歉。我本质上是想知道你能否在不输入 SQL 的情况下通过 DBeaver 选择串行开始。 【参考方案1】:

在查看了对我上面的问题非常有帮助的 cmets 之后,我意识到这个问题是由于我缺乏使用 DBeaver 的经验而提出的。

为了完整起见,我在下面列出了我的问题的答案:

    是的,有一种方法可以直接通过 DBeaver GUI 自动递增。

    这可以通过在创建表时设置一个 id 变量来实现通过约束键。

截图如下:

由于 PostgreSQL 的工作方式,“Serial”类型是一种伪类型,允许使用数字序列 (http://www.postgresqltutorial.com/postgresql-serial/)。

因此,在 DBeaver 中,一旦您设置了表格,它将显示为以下内容,而不是“串行”类型:

感谢这对任何熟悉 PostgreSQL 和/DBeaver 的人来说是一个非常明显的答案,感谢您的理解:)

【讨论】:

是否可以这样做,但不是在创建表格时,而是通过编辑它? @noloman 是的,可以在创建表后添加一个 id 列。右键单击“列”->“创建新列”,然后在弹出窗口中选择上面屏幕截图中的选项。 @OswaldoSalazar 如果该列已经存在怎么办?

以上是关于如何使用 PostgreSQL 在 DBeaver 中创建自动递增/SERIAL id 列?的主要内容,如果未能解决你的问题,请参考以下文章

DBeaver 只能看到连接中的默认 PostgreSQL 数据库

postgresql 事务

dbeaver连接Oracle数据库

sshtunnel:我可以使用 CLI、DBeaver 或 Paramiko 访问 ssh 网关,但不能使用 sshtunnel

MAC数据库客户端Dbeaver安装使用介绍

DBeaver:开源跨平台强大的数据库管理工具