- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三十章INFORMIX-4GL中的数据库更新本章介绍了UPDATE语句的.doc
?
?
第三十章
?
?
?
?
?
?
INFORMIX-4GL中的数据库更新
本章介绍了UPDATE语句的处理过程。
用户查询到一行,就可以让它对那行进行修改或删除。若是删除,就不必要得到除该行以外的其它信息。
对于修改请求,用户就要找到Form中要修改的那一行,因此要把控制权交给用户。这一功能的由INPUT语句实现。
INPUT语句用于接收用户从屏幕输入的信息,放到程序变量中。INPUT语句完成以下功能:
? 把程序变量初始化为NULL
? 把控到权交给用户
在屏幕上显示Form文件中DEFAULT属性描述的缺省值。
? 让用户往Form中输入信息
? 把信息传给程序变量
? 等待用户输入完毕的信号
INPUT语句首先把程序变量初始为NULL值,这对于修改是不利的。用户查询一行后,选择修改选项,这时,希望程序变量保持原值,以便对其修改。
这就需要让INPUT语句不把程序变量清为NULL。
开始时,WITHOUT DEFAULT子句听上去可能有些混乱,调用WITHOUT DEFAULTS的目的是为了在用INPUT语句时,使Form描述文件中的缺省值不在屏幕上显示。
屏幕上不显示缺省值的同时,WITHOUT DEFAULTS子句也不给程序变量赋值。换句话说,程序变量也不再是NULL。
上例说明了不同的INPUT对程序变量的影响,INPUT BY NAME把程序变量置空值,而INPUT BY NAME WITHOUT DEFAULTS不改变程序变量并使屏幕保持原值。
INPUT语句的其它功能保持不变,即:
? 把控制权转交用户
? 让用户往Form输入值
? 把信息自动传给程序变量
? 等待用户输入完毕的信号
? 使用同样的控制块结构
HELP数字
BEFORE FIELD 域名
AFTER FIELD 域名
AFTER INPUT
UPDATE操作包含两个步骤:
? INPUT WITHOUT DEFAUITS
? UPDATE
用户不能修改主键。若改了主键,UPDATE语句有可能:
? 由于WHERE子句中的主键值发生了变化而改错了
? 或因为没找到主键值为PK的相应行而没进行任何修改。
用INPUT语句去修改主键是SERIAL类型的表中某行的语法是:
INPUT BY NAME gr_customer.* WITHOUT DEFAULTS
若gr_customer记录中有SERIAL数据类型,则不允许在Form上修改该域。
?
若表的主键不是SERIAL类型(如stock表),用下面的语法:
INPUT BY NAME gr_stock.* WITHOUT DEFAULTS
它允许用户访问主键,且可以改变它。当对主键不是SERIAL类型字段的表进行修改时必须用INPUT WITHOUT DEFAULTS语句的长格式。
上图例子中明确说明了哪些字段用户可以修改。这种方法在对主键不是SERIAL类型字段的表进行INPUT WITHOUT DEFAUTS操作使用。
这种方法也可用于有SERIAL字段作主键的表,但要对可修改域进行限制。不能改SERIAL字段。
上图列出了UPDATE语句的例子。WHERE子句是可选项,若没有WHERE子句,表中的每一行都将改成程序变量中的值。
了解修改哪个字段并不重要。在上图例子中,customer表中除customer_num外的每一个域字段都改成了全局程序变量gr_customer.*中的当前值,即没有改主键值(在本例中是customer_num)。全局记录变量是用户通过INPUT输入的,除了SERIAL域,把一行中字段的值改成原本它所拥有的值是不会发生错误的。
UPDATE语句只能修改用户希望改的那行。
这就要保证表的主键值与屏幕上显示的值相等的行才能被修改。如上图例子A。
保证只修改屏幕上见到的行的最好办法是用前面介绍过的WHERE CURRENT OF子句,它用于指示UPDATE语句修改FOR UPDATE游标当前指向的那行。上图例子B即使用了此子句。
当用户离开Form域时,INPUT语句把Form中的值传给了程序变量。假设用户改变了其中三到四个的值,那么全局程序变量中就放了新值。这种改变无论是按ACCEPT还是INTERRUPT键都会反映到程序变量中,所以要想不保留修改,最好清屏。
上例中,是通过SELECT语句刷新旧值。因为用INPUT WITHOUT DEFAULTS时,不允许对主键字段进行修改,这就要通过重新选择,并从数据库表检索一行来赋初值。
UPDATE、DELETE、 INSERT和SELECT是常用的SQL语句,每次一个SQL语句相当于执行“磁盘访问”。众所周知,这是相当慢的操作。为了提高效率,尽可能避免磁盘访问,用SELECT进行清屏就
您可能关注的文档
最近下载
- 《工会基础知识》考试题库资料300题(含答案).pdf VIP
- 2021年事业单位工会系统招聘考试《工会基础知识》真题库及答案.pdf VIP
- 急性肺栓塞诊断与治疗指南 生活科普.pdf VIP
- 柴油泄漏应急预案演练.docx VIP
- 《可爱的中国》节选 Beloved China (Excerpt)-来源:英语世界(第2021010期)-商务印书馆有限公司.pdf VIP
- 宋词概述详解.ppt
- 胆管癌护理疑难病例讨论ppt.pptx
- 【2024】大象版科学五年级上册每课教学反思(带目录) .pdf VIP
- 大象版科学五年级上册知识点梳理总结 .pdf VIP
- 2022大象版(2017)科学五年级上册每课教学反思(附目录).docx VIP
文档评论(0)