如何使UPDATE语句在ctree上起作用?

时间:2018-08-09 14:58:34

标签: sql c-treeace

因此,我正在编写一个脚本,该脚本可以根据特定条件进行插入和更新。我已经完成了插入语句,但是很难尝试让我的UPDATE语句在CTREEACE DATABASE脚本部分中工作。如果有人熟悉ctree可以帮助您,请看看我的语法是否有问题。

UPDATE act
SET tbl71.address = act.address
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'

act view 
----------
trackingid(varchar)
delivery_time(varchar)
state(varchar)
address(varchar)                             
city(varcahr)
zipcode(varchar)
dates(varchar)

tbl71 view 
----------
trackingid(varchar)
delivery_time(varchar)
state(varchar)
address(varchar)
city(varcahr)
zipcode(varchar)
dates(varchar)

如果根据tbl71的行为视图中的日期存在地址,则从tbl71更新行为中的所有列

1 个答案:

答案 0 :(得分:0)

在开始时,请检查以下8条规则:

  1. 该视图是基于一个且仅一个表定义的
  2. 视图必须包含创建视图所依据的表的主键
  3. 视图中不应有任何由聚合函数组成的字段
  4. 视图的定义中不得包含任何DISTINCT子句
  5. 视图的定义中不得包含任何GROUP BY或HAVING子句
  6. 视图的定义中不得包含任何子查询
  7. 如果要更新的视图基于另一个视图,则后者应该是可更新的。 (视图的)任何选定的输出字段都不得使用常量,字符串或值表达式

下一个问题是idk为什么您要尝试使用 from (操作)从另一个视图(tbl71)更新列,但这取决于您。

如果此示例不起作用,没关系:

UPDATE act
SET act.address = tbl71 .address
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'

尝试查看此简单查询的结果以查看联合或联接的工作原理:

    SELECT *
    FROM act
    INNER JOIN tbl71 ON act.address = tbl71.address

在此之后,尝试添加*“ Where”:

SELECT *
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'

最后尝试获取更新。最简单的方法是重新创建视图(将视图改为1,而不是2,这将获得所需的最终数据。)