第三十章INFORMIX-4GL中的数据库更新本章介绍了UPDATE语句的.docVIP

第三十章INFORMIX-4GL中的数据库更新本章介绍了UPDATE语句的.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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进行清屏就

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档