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

Posted

技术标签:

【中文标题】我的存储函数消失了,大概是在我的 RazorSQL 会话结束时【英文标题】:My stored Function has disappeared, presumably at the end of my RazorSQL session 【发布时间】:2011-05-19 09:38:04 【问题描述】:

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

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

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

除了编写一个有效的“CREATE FUNCTION”块以使函数持久化之外,我还需要在 RazorSQL 中做什么?

【问题讨论】:

【参考方案1】:

在 Informix 中,几乎所有 SQL 语句(包括 DDL 和 DML)都受事务处理(CREATE DATABASE、DROP DATABASE 和 RENAME DATABASE 除外)。

Informix 中有多种类型的数据库 - 当前用途的主要区别在于“MODE ANSI”与“记录的”和“未记录的”数据库。

当您执行 CREATE FUNCTION 等语句时,MODE ANSI 数据库总是启动一个事务,并且该事务一直持续到您 COMMIT [WORK]、ROLLBACK [WORK] 或退出会话(相当于 ROLLBACK)。李> 已记录的数据库支持事务,但每个语句都是一个独立的事务,除非您使用 BEGIN [WORK] 显式启动事务。实际上,AutoCommit 一直适用,直到您执行 BEGIN WORK。 未记录的数据库不支持事务;每条语句或多或少都是一个独立的事务,没有覆盖这种行为的机制。

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

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

【讨论】:

那么事务实际上会回滚已经执行的存储过程的创建吗?克里基... @Frosty840 - 这并不奇怪,事务允许您提交或回滚对数据库执行的 SQL 命令。就数据库而言,插入/更改数据的命令与创建/删除命令没有什么不同。 @Frosty840:是的 - 你可以这样做:BEGIN; DROP TABLE; CREATE TABLE; LOAD TABLE; ROLLBACK;,一切都和以前一样。

以上是关于我的存储函数消失了,大概是在我的 RazorSQL 会话结束时的主要内容,如果未能解决你的问题,请参考以下文章

RazorSQL配置文件,命令行调用和Windows任务用户混合

为啥我的 UI 元素在执行 paint(); 后消失了?

PostgreSQL 通过 SSH 隧道

QT Gui 窗口在 Maya 中出现然后消失

为啥我的链表内容在退出函数时会消失?

Xcode 9 中的帐户消失