oracle中如何进行PK
How work PK in oracle
我的任务是检查和更改 oracle table 中的 PK 字段(我是 Postgresql 和 Sql 服务器人员)我检查了 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
但在我的测试中我可以插入空值但两次插入不同的 id
所以不确定 Disable
约束是否意味着我认为应该意味着什么。
禁用就是您认为的意思。
关于NOT NULL
和PRIMARY KEY
,是两个约束条件。主键意味着 NOT NULL
,但如果删除主键约束,检查约束仍然存在。有关详细信息,请参阅 here。
关于"I can insert null values...":这是因为两个约束都被禁用了。
关于“...但两次不同的 ID”:主键约束和用于强制执行它的唯一索引是两件不同的事情。你能检查一下这个列是否有唯一索引吗?
我的任务是检查和更改 oracle table 中的 PK 字段(我是 Postgresql 和 Sql 服务器人员)我检查了 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
但在我的测试中我可以插入空值但两次插入不同的 id
所以不确定 Disable
约束是否意味着我认为应该意味着什么。
禁用就是您认为的意思。
关于NOT NULL
和PRIMARY KEY
,是两个约束条件。主键意味着 NOT NULL
,但如果删除主键约束,检查约束仍然存在。有关详细信息,请参阅 here。
关于"I can insert null values...":这是因为两个约束都被禁用了。
关于“...但两次不同的 ID”:主键约束和用于强制执行它的唯一索引是两件不同的事情。你能检查一下这个列是否有唯一索引吗?