pgAdmin中的主键和外键

57

我想知道如何在pgAdmin中指定主键和外键,能否有人给我解释一下?

我在网上找不到任何信息。

例如,我有一个学生表格,包含他们的所有详细信息(地址、出生日期等)。我将添加一个名为“student_number”的列,并将其设置为主键。

我只是想知道如何在pgAdmin中执行此操作?如果您能够友好地解释一下如何在postgreSQL(和pgAdmin)中使用主键和外键,那就更好了。

5个回答

112

是的,在pgAdmin中添加主键和外键有一种方法。

在Windows 7上测试过的pgAdmin III Ver.1.16.1

  1. 选择您想要的表
  2. Ctrl+Alt+Enter或右键单击/属性
  3. 选择“Constraints”选项卡
  4. 在表单的左下角,您将看到“Primary Key”选项
  5. 点击添加
  6. 选择“Columns”选项卡
  7. 选择您想要作为关键字的列
  8. 点击添加

这样就完成了。

如果您愿意,您还可以填写更多内容,但现在您已经知道如何操作了。


这会将一个键添加到表本身,还是只是在PGadmin中虚拟地添加?如果是前者,你的应用程序不会出现问题吗?这种方法添加了一个约束条件,而不是列,所以它是安全的吗? - ahnbizcad
有没有一种方法可以添加“常规索引”以进行优化(而不是约束/逻辑目的),以便更快地搜索? 我似乎在pgadmin3中找不到它(约束只有约束类型)。 - kfmfe04

25

在pgAdmin中,没有选项可以同时向现有表添加列并将其设置为主键,因为这几乎不可能。

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

然而,有一个例外:如果您添加了serial列,则会自动插入唯一值。在这种情况下,您也可以立即定义它为PRIMARY KEY:

ALTER TABLE student ADD COLUMN student_number serial PRIMARY KEY;

这个在PostgreSQL 9.1中有效。我不确定它在旧版本中是否有效。
在当前版本的pgAdmin(版本1.14)中,“新建列…”对话框中没有包含serial列的特殊情况。

1
请参考Victor Barrantes的回答,他似乎发现了pgadmin,所以他很少会遇到你在这里描述的情况,尽管你的回答非常有趣。 - Damien MIRAS

1

在Pgadmin3中,

  1. 转到您想要添加PK或FK的表,右键单击并选择属性。

  2. 转到约束选项卡。

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

  4. 然后点击添加按钮。

  5. 转到列选项卡。

  6. 在下拉列表中选择要添加的列名。

  7. 点击添加按钮。

  8. 点击确定按钮。

    希望对您有所帮助!


0
以下的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';

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接