其实这个问题在在这里问似乎比较不合适,我公司总部用的是oracle数据库,每张客户表里serv_id 字段是客户的唯一标识,但是,serv_id的值在表中并不是唯一的,一个serv_id 的值可能有都条记录。
问过系统厂家的人员,他们说serv_id 就是主键
我就觉得奇怪了,难道oracle 的主键允许一个值存在多条记录么?
(怕被公司的同事笑话,所以就到这里来问了)

解决方案 »

  1.   

    那要看看这些一个serv_id 的值对应多条记录的值是不是都是属于同一厂家的
      

  2.   

    serv_id的值在表中并不是唯一的,一个serv_id 的值可能有都条记录。 
    问过系统厂家的人员,他们说serv_id 就是主键 
    有可能他们使用serv_id和其他的属性做的主键。一般这种问题,大型数据库是不会犯这种错误的,oracle 的主键允许一个值存在多条记录么这个就属于低级的理论错误了。
      

  3.   

    表通常具有包含唯一标识表中每一行的值的一列或一组列。这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。在创建或修改表时,您可以通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,并且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束可保证数据的唯一性,因此经常对标识列定义这种约束。如果为表指定了 PRIMARY KEY 约束,则 SQL Server 2005 Database Engine 将通过为主键列创建唯一索引来强制数据的唯一性。当在查询中使用主键时,此索引还可用来对数据进行快速访问。因此,所选的主键必须遵守创建唯一索引的规则。 如果对多列定义了 PRIMARY KEY 约束,则一列中的值可能会重复,但来自 PRIMARY KEY 约束定义中所有列的任何值组合必须唯一。
      

  4.   


    我截了图,大家可以看下,这个是在pl/sql下的表信息
    大家可以看到 primary key 下是空的,没有主键
    这张表serv_t是我们的客户资料表
    我们的系统厂家是朗新公司,这个表没有主键,我猜应该不会犯这个错误吧?
    应该只有我不懂的地方,请大家讨论讨论