如何在一个具有2个属性的表中作为复合主键添加一个仅作为1个属性的行?

时间:2013-10-05 05:11:13

标签: sql oracle

实施例: - 我有一个名为Person的表,它有2列person_id和技能。主键是(person_id,skill)

人: - Person_id |技术人员

        1     | skill_a
        1     | skill_b
        2     | skill_a

所以一个人可以拥有很多技能。但是如何添加一个没有技能的人(因为skil列不采用空值)

2 个答案:

答案 0 :(得分:0)

insert table person(person_id) values('3')

并将技能设为null

如果你设置person_id,技能是主键,那么你就不设置null。

因为primary_key = 唯一 + 不为空

答案 1 :(得分:0)

sql中有两个约束

  1. 主键
  2. 唯一键
  3. 两者都用于避免重复。唯一键仅允许空值一次。但主键不允许空值。

    最好使用UNIQUE约束而不是PRIMARY KEY约束来实现它。