小学和初级pgAdmin中的外键

时间:2012-03-15 19:12:47

标签: postgresql foreign-keys primary-key pgadmin

我想知道有些人可以解释一下如何在pgAdmin中分配主键和外键吗?

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

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

我只想知道如何使用pgAdmin执行此操作?如果你可以善解释,请给我关于在postgreSQL(和pgAdmin)中使用主键的更多信息。与外键相同的情况。

5 个答案:

答案 0 :(得分:104)

是的,有一种方法可以添加Primary& pgAdmin中的外键。

在pgAdmin III Ver.1.16.1(Windows 7)中测试

  1. 选择您想要的表格
  2. Ctrl + Alt + 输入或右键单击/属性
  3. 选择“约束”标签
  4. 在表单的左下方,您会看到“主键”选项
  5. 点击添加
  6. 选择“列”标签
  7. 选择所需的列作为键
  8. 点击添加
  9. 你们已经定下来了。

    如果你愿意,你可以填写更多的东西,但现在你知道如何到达那里。

答案 1 :(得分:22)

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

主键列需要保存唯一的非空值。将列添加到现有表后,它将保留NULL值。因此,您必须先输入唯一值,然后才能添加UNIQUEPRIMARY KEY约束。

该规则存在例外:如果添加serial列,则会自动插入唯一值。在这种情况下,您还可以立即定义PRIMARY KEY:

ALTER TABLE student ADD COLUMN student_number serial PRIMARY KEY;

这适用于PostgreSQL 9.1。我也不确定它在旧版本中是否也适用。

pgAdmin目前在“新列...”对话框中没有为serial列添加此特例(版本1.14)。

答案 2 :(得分: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';

答案 3 :(得分:0)

在Pgadmin3中,

  1. 转到要添加PK或FK的表格,然后右键单击并选择属性。
  2. 转到约束标签。
  3. 在“添加”按钮旁边的下拉列表中选择“主键”或“外键”。
  4. 然后点击添加按钮。
  5. 转到列标签。
  6. 在下拉列表中选择要添加的列名称。
  7. 点击添加按钮。
  8. 单击“确定”按钮。

    希望它对你有所帮助!

答案 4 :(得分:0)

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