Postgresql 小学及中学;pgAdmin中的外键

Postgresql 小学及中学;pgAdmin中的外键,postgresql,foreign-keys,primary-key,pgadmin,Postgresql,Foreign Keys,Primary Key,Pgadmin,我想知道一些人能给我解释一下如何在pgAdmin中分配主键和外键吗 我在网上找不到任何信息 例如,我有一张学生表,上面有他们的所有详细信息(地址、d.o.b.等)。我将向表中添加一个student_编号,并将其作为主键 我只是想知道如何使用pgAdmin实现这一点?如果您愿意解释的话,请给我更多关于在postgreSQL(和pgAdmin)中使用主键的信息。外键的情况也一样。在pgAdmin中没有向现有表中添加列并同时使其成为主键的选项,因为这几乎是不可能的 主键列需要保存唯一的非空值。在向现有

我想知道一些人能给我解释一下如何在pgAdmin中分配主键和外键吗

我在网上找不到任何信息

例如,我有一张学生表,上面有他们的所有详细信息(地址、d.o.b.等)。我将向表中添加一个student_编号,并将其作为主键


我只是想知道如何使用pgAdmin实现这一点?如果您愿意解释的话,请给我更多关于在postgreSQL(和pgAdmin)中使用主键的信息。外键的情况也一样。

在pgAdmin中没有向现有表中添加列并同时使其成为主键的选项,因为这几乎是不可能的

主键列需要保存唯一的非空值。在向现有表中添加列时,它会保存空值。因此,在添加
唯一
主键
约束之前,必须输入唯一值

但是,该规则有一个例外:如果添加列,将自动插入唯一值。在这种情况下,您还可以立即定义它的主键:

ALTER TABLE student ADD COLUMN student_number serial PRIMARY KEY;
这在PostgreSQL 9.1中起作用。我不确定它在旧版本中是否也适用


pgAdmin目前(版本1.14)在“新建列…”对话框中没有为
串行列合并此特殊情况。是的,有一种方法可以在pgAdmin中添加主键和外键

在pgAdmin III 1.16.1版(Windows 7)中测试

  • 选择所需的表
  • Ctrl+Alt+Enter或右键单击/Properties
  • 选择“约束”选项卡
  • 在表单的左下侧,您将看到选项“主键”
  • 单击添加
  • 选择“列”选项卡
  • 选择要作为键的列
  • 单击添加
  • 你们都准备好了


    如果您愿意,您可以填充更多内容,但现在您知道如何到达那里。

    下面的SQL将起作用

    SELECT
        tc.constraint_name, tc.table_name, kcu.column_name, 
        ccu.table_name AS foreign_table_name,
        ccu.column_name AS foreign_column_name 
    FROM 
        information_schema.table_constraints AS tc 
        JOIN information_schema.key_column_usage AS kcu
          ON tc.constraint_name = kcu.constraint_name
        JOIN information_schema.constraint_column_usage AS ccu
          ON ccu.constraint_name = tc.constraint_name
    WHERE constraint_type = 'PRIMARY KEY' AND tc.table_name='table_name';
    
    在Pgadmin3中

  • 转到要添加PK或FK的表,右键单击并选择属性

  • 转到“约束”选项卡

  • 在“添加”按钮旁边的下拉列表中选择主键或外键

  • 然后单击添加按钮

  • 转到“列”选项卡

  • 在下拉列表中选择要添加的列名

  • 单击添加按钮

  • 点击Ok按钮

    希望对你有帮助


  • pgAdmin 4.29不允许您在创建表的同一对话框中创建外键。要创建外键,请先创建表,然后在资源管理器中展开表、列和外键节点。选择“创建”。

    这是向表本身添加键,还是仅仅在PGadmin中添加键?如果是Previor,你的应用程序中不会出现问题吗?这种方法添加了一个约束,而不是一列,那么它安全吗?有没有办法添加一个“常规索引”用于优化目的(而不是约束/逻辑目的)-用于更快的搜索?我似乎在pgadmin3中找不到它(约束只有约束类型)。这很有效,可能应该是公认的答案?(问题是如何在pgAdmin中实现这一点,而公认的答案并不能解释这一点。)参见Victor Barrantes的答案,n看来theeth先生发现了pgAdmin,因此他很少有机会落入您在这里描述的场景,尽管您的答案非常有争议。