更新虚表的记录。
T.update(P:D)
备注:
根据排列P与D更新虚表T的记录,保证P的结构和虚表T结构一致;
P的键值在虚表T中存在则更新该条记录,P的键值在T中不存在,则将此记录追加或插入到T中。
D的键值在T中存在则删除该条记录,参数D可以省略。
虚表T没有维时忽略D,此时P中数据全部追加到T的末尾。
参数:
T |
虚表对象。 |
P |
要更新的内容,和T同构的排列/序表,可省略。 |
D |
根据D的键值删除T的记录,可省略。 |
选项:
@i |
只处理插入,键值能找到的忽略。 |
@u |
只处理更新,键值找不到的忽略。 |
@n |
返回更新和插入及删除的记录。 |
@w |
P是游标与原表同序,重写P涉及的字段,该选项仅支持T列存格式时使用,不可增加记录。 |
@y |
保持在内存,在计算时归并,不写入外存。 |
返回值:
虚表对象
示例:
|
A |
|
1 |
=create(file).record(["D:/file/pseudo/Employee.ctx"])
|
|
2 |
=pseudo(A1)
|
生成虚表对象。 |
3 |
=create(Dept,AvgSalary).record(["HR",7000,"CSD",6018.04]) |
返回序表。 |
4 |
=A2.update(A3) |
将A3中的虚表记录按键值更新虚表A2的记录。 |
5 |
=A4.import() |
|
返回更新、插入、删除的记录:
|
A |
|
1 |
=create(file).record(["empD.ctx"]) |
empD.ctx组表内容:
|
2 |
=pseudo(A1) |
生成虚表对象。 |
3 |
=create(EID,NAME).record([10,"bb",11,"cc"]) |
返回序表:
|
4 |
=create(EID,NAME).record([1,"aaa",12,"ww"]) |
返回序表:
|
5 |
=A2.update@n(A3:A4) |
更新虚表A2,A3键值在A2中存在则更新A2记录,不存在则插入或追加到A2,A4键值在A2中存在时删除该条记录,使用@n选项,返回更新、插入、删除的记录:
|
6 |
=A2.import() |
此时读取虚表A2中的数据:
|
没有维的情况:
|
A |
|
1 |
=file("empD.ctx") |
|
2 |
=A1.create@y(EID,NAME) |
创建组表。 |
3 |
=connect("demo").cursor("select top 10 EID,NAME from employee") |
返回游标,其中数据内容如下:
|
4 |
=A2.append@i(A3) |
将A3游标中的数据追加到虚表A2中。 |
5 |
=create(file).record(["empD.ctx"]) |
|
6 |
=pseudo(A5) |
生成虚表对象。 |
7 |
=create(EID,NAME).record([10,"bb",11,"cc"]) |
生成序表:
|
8 |
=create(EID,NAME).record([1,"Rebecca"]) |
生成序表:
|
9 |
=A6.update(A7:A8) |
虚表无维的情况下,更新时忽略参数D,并且将P中的所有记录追加进虚表,所以此处将A7的记录全部追加进虚表,忽略此处的参数A8。 |
10 |
=A9.import() |
此时读取虚表A9的数据如下:
|
使用@y选项,更新保持在内存:
|
A |
|
1 |
=create(file).record(["em.ctx"]) |
返回虚表定义记录。 |
2 |
=pseudo(A1) |
生成虚表定义对象。 |
3 |
=A2.import() |
读取虚表数据:
|
4 |
=create(EID,NAME).record([1,"AAAA"]) |
返回序表:
|
5 |
=A2.update@y(A4) |
将A4序表中的记录更新到虚表中,使用@y选项,更新内容保持在内存。 |
6 |
=A2.import() |
此时读取虚表数据,可以看到A5中更新的内容:
|
7 |
>A2.close() |
关闭虚表。 |
8 |
=pseudo(A1).import() |
读取虚表数据,A5中使用@y选项,更新的内容不写入外存,所以返回结果同A3:
|
使用@w选项:
|
A |
|
1 |
=connect("demo").cursor("select top 5 STOCKID,DATE,CLOSING from STOCKRECORDS where STOCKID = ? ","000062") |
返回游标。 |
2 |
=file("STOCKRECORDS.ctx") |
|
3 |
=A2.create@y(#STOCKID,DATE,CLOSING) |
创建组表文件,包含STOCKID,DATE,CLOSING列,其中STOCKID为键。 |
4 |
=A3.append@i(A1) |
将A1游标中的数据追加到组表中。 |
5 |
=create(file).record(["STOCKRECORDS.ctx"]) |
|
6 |
=pseudo@v(A5) |
生成虚表对象,组表上的虚表时,使用@v选项,使用纯序表列式计算。 |
7 |
=A6.import() |
获取虚表中的数据:
|
8 |
=connect("demo").cursor("select top 7 STOCKID,DATE from STOCKRECORDS where STOCKID = ?","000792") |
返回游标,内容如下:
|
9 |
=A6.update@w(A8) |
更新虚表记录,使用@w选项,重写P涉及的字段,不增加记录。 |
10 |
=A9.import() |
读取更新后的虚表记录:
|