使用oracle中的自动增量列从表创建视图

时间:2015-05-22 21:49:37

标签: sql oracle

我正在尝试从表中创建一个没有任何唯一键或主键的视图。我试图使用以下sql statment,但它给出了错误

  #let presume the table name is foo
  SELECT rownum, * from (SELECT * from foo)

  #error
  #ORA-00936: missing expression
  #00936. 00000 -  "missing expression"

我是否缺少任何东西或需要制作

1 个答案:

答案 0 :(得分:2)

如果您提供了别名

,则会运行您的查询
select rownum,
       a.*
  from (select *
          from foo) a

当然,正如所写,您可以将查询简化为

select rownum,
       foo.*
  from foo

但我假设您的子查询中还有其他内容,这使得首先使用子查询变得合理。

退一步说,我不确定你的查询是否能达到你想要的效果,即使你已经开始工作了。使用rownum分配伪密钥不太可能非常有用。除非您的子查询具有生成唯一订单的order by子句,并且您可以保证永远不会插入比某些现有行更早排序的行,这似乎不太可能,所以rownum分配给特定行可能会从查询的运行更改为运行。没有唯一且持久地识别一行数据的“密钥”是一件毫无意义的事情。但是,即使您可以保证这些内容,也不能使用rownum进行更新,如果您尝试向视图添加谓词,则可能无法获得所需的结果。