如题:一般修改和删除都是根据表的主键来操作的。。现在表没有主键,该怎么做呢?写多个where语句,这个确实可以。可是万一表中字段太多,根本就行阿。。如果就只指定几个,可能影响到表中别的行。。oracle数据库。。
各位说说该怎么做?最好能写个例子。。有代码可看。

解决方案 »

  1.   

    不一定要有主健,如果有可以确定唯一行的列就可以了,比如有一个值是序号的,是唯一,就可以用where了啊
      

  2.   

    DBA会告诉你,没有主键的表不能称之为表。
      

  3.   

    唯一标识必须有了,要不然where根本区分不开。
      

  4.   

    没有主键????!!!! 像楼上说的有没有唯一字段,这个都没有,最好加上,否则数据很容易乱套,update 的时候加一堆where条件,数据库也吃不消
      

  5.   

    快速查找一些记录跟主键没有直接关系,只要保证有足够的索引就行。主键主要是作为一种逻辑工具,比如我们说“存在这样的记录,它是2011年8月11日上午发生的,它的操作员是abcd,它的目标用户使wxyz,它的信息里边有一个脏字”,这是表达查询条件,但是我们都知道这个话中的“记录”概念都是独立和唯一的,只是我们没有用更加可操作的一个代号来代表它而已。那么加上主键顺理成章,将来就可以直接用一个代号,而不是用一堆罗哩罗嗦的查询语句来表达它。
      

  6.   

    没有主键,却要删除某条记录。不好办,搞不懂,你们在设计数据库的时候,Why不设计表主键。
      

  7.   

    创建一GUID列 根据这列来删除!
      

  8.   

    找一个唯一标识的 做查询加一个自增Id也可以,或者加个guid欢迎光临我的博客
      

  9.   

    可以根据rowid进行删除,如果你能确定rowid的话
      

  10.   

    select row_number() over(order by ...) as row ,* from table 通过row可以得到你的行号!没有重复的
      

  11.   

    用 rowid 就可以了;而且速度是最快的;