代码之家  ›  专栏  ›  技术社区  ›  Juan Carlos Oropeza

如何在Oracle中使用pk

  •  0
  • Juan Carlos Oropeza  · 技术社区  · 8 年前

    我有一个任务要检查和更改Oracle表中的pk字段(我是PostgreSQL和SQL Server Guy),我检查了toad约束,发现了:

    PK_POI    Primary Key Disabled  Not Deferrable  Immediate  Not Validated  1    MI_PRINX
    SYS_C0010910    Check Disabled  Not Deferrable  Immediate  Not Validated  1    "MI_PRINX" IS NOT NULL
    

    对于我所能看到的,两个约束在哪里被创建,但是根据我的理解,一个pk已经是一个 NOT NULL 字段那么为什么需要两个约束?

    Disable

    1 回复  |  直到 8 年前
        1
  •  1
  •   wolφi    8 年前

    NOT NULL 和 PRIMARY KEY 它们是两个约束条件。主键意味着 不为空 ,但如果删除主键约束,则检查约束仍然存在。见 here 有关详细信息。

    关于“我可以插入空值…”:这是因为两个约束都被禁用。

    关于“…但不是同一个ID两次”:主键约束和用于强制它的唯一索引是两个不同的东西。你能检查一下这一栏是否有唯一的索引吗?