KSH更新:获取受影响的行

时间:2016-06-29 14:58:58

标签: sql bash teradata ksh

您好我查询了类似的teradata数据库:

for  var in `db2 -x  "$other_query"`; 
do
 query_update_date="update test SET date =Null WHERE 
name_test='$var '"
 db2 -v "$query_update_date"
done

我的查询已执行,但只有当一行或更多行因更新而受影响(更改)时,我才会打印query_update_date。

示例:
    如果我有  首先查询循环:

 query_update_date="update test SET date =Null WHERE 
name_test='John'"

和循环的第二个查询:

query_update_date="update test SET date =Null WHERE 
name_test='Jeff'"

在查询之前的表格中:

name_test         date
 Jeff             01/07/2016
 John             Null

查询后

name_test         date
 Jeff             Null
 John             Null

John的约会日期已为空,因此未受更新影响。  和

db2 -v "$query_update_date"

打印我的查询。我之前的例子只是在我的日志中打印

query_update_date="update test SET date =Null WHERE 
name_test='Jeff'"

1 个答案:

答案 0 :(得分:0)

在执行查询之前和之后拍摄表的快照。使用您喜欢的任何工具:如何(假设SQL) SPOOL “SELECT * FROM T ”预先查询此文件,然后再查询到该文件。使用UNIX diff 命令比较这两个文件,并仅计算其输出的长度:

  

LINES_OUT = $(diff oldResults newResults | wc -l)
  如果[[$ LINES_OUT = 0]]
  然后
   #记录查询,但是你这样做了   网络

如果 $ IS_ANY_DIFF 为true,请记录查询;否则,不要。