尝试在视图创建中添加更新
Trying to add update in view creation
我在基础 table test1 上创建了一个视图,并在创建时在其中添加了两列。
create or replace force view abc1 as (select A.*,cast(NULL as timestamp) AS new1,cast(NULL as varchar2) AS new2 from test1 A);
所以创建视图后,它有如下数据:
select * 来自 abc1;
TT | TT_C2 | TT_DAY | TT_HOURLY | OC | SEV | EXTRACOL | IDENTIFIER | NEW1 | NEW2
1468309423961 | 2016-07-12 07:43:43.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1 | null | null
1468922692865 | 2016-07-19 10:04:52.0 | 19-07-2016 | 19-07-2016 10 | abc | Critical | asdf | 1 | null | null
1568308812001 | 2019-09-12 17:20:12.0 | 12-09-2019 | 12-09-2019 17 | abc1 | Major | asdf | 1 | null | null
1468308812001 | 2016-07-12 07:33:32.0 | 12-07-2016 | 12-07-2016 07 | abc2 | Minor | asdf | 1 | null | null
1468308815972 | 2016-07-12 07:33:35.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1 | null | null
现在我正在尝试更新 timestmap 数据类型的 new1 列,但由于某些限制我无法更新视图..
update view abc1 set new1 = DATEADD('SECOND', (TT)/1000), DATE '1970-01-01') WHERE new1 IS NULL;
错误是::
Syntax error in SQL statement "UPDATE ABC1 SET NEW1 = DATEADD('SECOND', (TT)/1000)[*], DATE '1970-01-01') WHERE NEW1 IS NULL "; expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,"; SQL statement:
update abc1 set new1 = DATEADD('SECOND', (TT)/1000), DATE '1970-01-01') WHERE new1 IS NULL [42001-176]
如何将我的更新 "new1" 列查询添加到我的视图创建中,以便仅在视图创建期间解决此问题。
这是我的基地table ::
TT | TT_C2 | TT_DAY | TT_HOURLY | OC | SEV | EXTRACOL | IDENTIFIER
1468309423961 | 2016-07-12 07:43:43.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1
1468922692865 | 2016-07-19 10:04:52.0 | 19-07-2016 | 19-07-2016 10 | abc | Critical | asdf | 1
1568308812001 | 2019-09-12 17:20:12.0 | 12-09-2019 | 12-09-2019 17 | abc1 | Major | asdf | 1
1468308812001 | 2016-07-12 07:33:32.0 | 12-07-2016 | 12-07-2016 07 | abc2 | Minor | asdf | 1
1468308815972 | 2016-07-12 07:33:35.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1
提前致谢!
问候
理想情况下,您不应该更新视图。
根据您的要求,您必须使用包装器来获取列(即 select 而不是 select)。
create or replace force view abc7 as (select tt,oc,sev, converted_event_time,formatdatetime(converted_event_time,'d-MM-yyyy HH') ,formatdatetime(converted_event_time,'d-MM-yyyy') AS event_time_day from (select tt,oc,sev,DATEADD('SECOND', (tt)/1000, DATE '1970-01-01') AS converted_event_time from test1));
希望这个答案对您有用。
我在基础 table test1 上创建了一个视图,并在创建时在其中添加了两列。
create or replace force view abc1 as (select A.*,cast(NULL as timestamp) AS new1,cast(NULL as varchar2) AS new2 from test1 A);
所以创建视图后,它有如下数据:
select * 来自 abc1;
TT | TT_C2 | TT_DAY | TT_HOURLY | OC | SEV | EXTRACOL | IDENTIFIER | NEW1 | NEW2
1468309423961 | 2016-07-12 07:43:43.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1 | null | null
1468922692865 | 2016-07-19 10:04:52.0 | 19-07-2016 | 19-07-2016 10 | abc | Critical | asdf | 1 | null | null
1568308812001 | 2019-09-12 17:20:12.0 | 12-09-2019 | 12-09-2019 17 | abc1 | Major | asdf | 1 | null | null
1468308812001 | 2016-07-12 07:33:32.0 | 12-07-2016 | 12-07-2016 07 | abc2 | Minor | asdf | 1 | null | null
1468308815972 | 2016-07-12 07:33:35.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1 | null | null
现在我正在尝试更新 timestmap 数据类型的 new1 列,但由于某些限制我无法更新视图..
update view abc1 set new1 = DATEADD('SECOND', (TT)/1000), DATE '1970-01-01') WHERE new1 IS NULL;
错误是::
Syntax error in SQL statement "UPDATE ABC1 SET NEW1 = DATEADD('SECOND', (TT)/1000)[*], DATE '1970-01-01') WHERE NEW1 IS NULL "; expected "[, ::, *, /, %, +, -, ||, ~, !~, NOT, LIKE, REGEXP, IS, IN, BETWEEN, AND, OR, ,"; SQL statement:
update abc1 set new1 = DATEADD('SECOND', (TT)/1000), DATE '1970-01-01') WHERE new1 IS NULL [42001-176]
如何将我的更新 "new1" 列查询添加到我的视图创建中,以便仅在视图创建期间解决此问题。
这是我的基地table ::
TT | TT_C2 | TT_DAY | TT_HOURLY | OC | SEV | EXTRACOL | IDENTIFIER
1468309423961 | 2016-07-12 07:43:43.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1
1468922692865 | 2016-07-19 10:04:52.0 | 19-07-2016 | 19-07-2016 10 | abc | Critical | asdf | 1
1568308812001 | 2019-09-12 17:20:12.0 | 12-09-2019 | 12-09-2019 17 | abc1 | Major | asdf | 1
1468308812001 | 2016-07-12 07:33:32.0 | 12-07-2016 | 12-07-2016 07 | abc2 | Minor | asdf | 1
1468308815972 | 2016-07-12 07:33:35.0 | 12-07-2016 | 12-07-2016 07 | abc | Critical | asdf | 1
提前致谢!
问候
理想情况下,您不应该更新视图。
根据您的要求,您必须使用包装器来获取列(即 select 而不是 select)。
create or replace force view abc7 as (select tt,oc,sev, converted_event_time,formatdatetime(converted_event_time,'d-MM-yyyy HH') ,formatdatetime(converted_event_time,'d-MM-yyyy') AS event_time_day from (select tt,oc,sev,DATEADD('SECOND', (tt)/1000, DATE '1970-01-01') AS converted_event_time from test1));
希望这个答案对您有用。