T.update(P:D)

阅读(206) 标签: 更新, 记录, 虚表记录,

描述:

更新虚表的记录。

语法:

T.update(P:D)

备注:

根据排列PD更新虚表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)

更新虚表A2A3键值在A2中存在则更新A2记录,不存在则插入或追加到A2A4键值在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()

读取更新后的虚表记录: