我存储的函数已经消失了,大概是在我的 RazorSQL 会话结束时



我正在使用RazorSQL的实时会话窗口来创建和编辑几个存储过程。

此后,我与数据库断开连接并重新连接,现在这些过程已经消失了。

大概我在这里搞砸了,但我使用的是有权创建这些过程的登录名,虽然我第一次仍然连接,但我实际上可以连接并执行存储过程,所以我知道它们至少在这一点上。

在 RazorSQL 中,除了编写一个有效的"创建函数"块以使函数变得持久之外,我还需要做什么?

在 Informix 中,几乎所有的 SQL 语句,包括 DDL 和 DML,都受事务处理(创建数据库、删除数据库和重命名数据库除外)。

Informix 中有几种类型的数据库 - 当前用途的关键区别在于"MODE ANSI"与"已记录"和"未记录"数据库之间的区别。

  • 当您执行诸如 CREATE 函数之类的语句时,模式 ANSI 数据库始终启动事务,并且事务将继续,直到您提交 [WORK]、回滚 [WORK] 或退出会话(等效于 ROLLBACK)。
  • 记录的数据库支持事务,但每个语句都是自包含事务,除非您使用 BEGIN [WORK] 显式启动事务。 实际上,自动提交在您执行"开始工作"之前一直适用。
  • 未记录的数据库不支持事务;每个语句或多或少都是一个自包含事务,没有覆盖此行为的机制。

在我看来,你所看到的最可能的解释是:

  • 您(或 RazorSQL)启动了一个事务(使用 BEGIN WORK 显式启动,或在 MODE ANSI 数据库中隐式)并在提交事务之前退出,因此效果已回滚。

相关内容

最新更新