SQL Developer - Views,Row ID&插入

时间:2012-05-23 10:21:39

标签: sql oracle oracle10g ora-01446

“CID”,“NAME”,“EMAIL”,“LOC”是两个表的属性

  

创建视图TEST_V为

     

从表1中选择*

     

联盟

     

从表2中选择*;


  

插入TEST_ERROR(Source_Rowid,Source_Table,Filter_Id,   Date_Time,Action)

     

选择ROWID,'TEST_V',100,sysdate,'请求管理员'

     

来自TEST_V

     

LOC =(从位置选择CityList);

位置是另一个表,并在其中定义了CityList,我希望将CityList与LOC匹配,然后添加该行。

我得到的错误是:

SQL错误:ORA-01446:无法从DISTINCT,GROUP BY等视图中选择ROWID或采样。 01446. 00000 - “无法从DISTINCT,GROUP BY等视图中选择ROWID或采样”

2 个答案:

答案 0 :(得分:0)

如果需要视图基表的ROWID,请执行以下操作:

Create View TEST_V As
Select Table1.*, rowid as row_id From Table1
Union all
Select Table2.*, rowid as row_id From Table2;

然后:

Insert Into TEST_ERROR (Source_Rowid, Source_Table, Filter_Id, Date_Time, Action)
Select ROW_ID, 'TEST_V', 100, sysdate,'Request Admin'
From TEST_V
Where LOC in (Select CityList From Location);

答案 1 :(得分:0)

在这个查询中的

(loc =从城市中选择城市列表)这一多个城市中的所有城市都被一次性选中,因此这些不能同时适合于它为什么会给出错误 试试这个(loc =(从citylist ='选择citylist ='作为你桌子中一个城市的名字')) 我认为它会起作用