SQL Anywhere错误-728:尝试对不可更新的远程查询执行更新操作

时间:2015-01-13 08:29:25

标签: sql sql-update sybase-iq

我想做的事情:

update table_name set field2 = substring(REGEXP_SUBSTR(field1, 'item=[0-9]+', charindex('item=', field1)), 6)

但是我得到了

SQL Anywhere Error -728: Update operation attempted on non-updatable remote query

我能以某种方式解决它吗?我不使用本地/远程表。我用一张桌子。

2 个答案:

答案 0 :(得分:0)

所以我猜我找到了解决方案......甚至2。 遗憾的是仍无法使用REGEXP_SUBSTR ... 我这样做:

<强>第一

alter table my_table add item_position int null
alter table my_table add is_char int null
alter table my_table add item_part varchar(200) null
alter table my_table add item bigint null    

update my_table set item_position = charindex('item=', field1)+5; 
update my_table set item_part = substring(field1, item_pos, 10); 
update my_table set is_char = charindex('&', clid_part)-1;     
update my_table set item = case when is_char = -1 then item_part else substring(item_part, 1, charindex('&', item_part)-1) end;

cast(str_replace(substring(field1, charindex('item=', field1)+5, 10), substring(substring(field1, charindex('item=', field1)+5, 10), 
(charindex('&', substring(field1, charindex('clid=', field1)+5, 10)))), '') as integer) as item

像这样的东西

答案 1 :(得分:0)

我建议仔细检查table_name实际上是一个表,但不是视图。如果是视图,您可以使用sp_helptext命令查看其定义,例如

  

sp_helptext'view_name'

  

sp_helptext'chece_name.view_name'