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

发布于 2024-11-08 06:16:26 字数 229 浏览 0 评论 0原文

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

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

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

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

I was using RazorSQL's live session window to create and edit several stored procedures.

I've since disconnected from the database, and reconnected, and now those procedures have disappeared.

Presumably I'm screwing up, here, but I'm using a login which has permission to create these procedures and while I'm still connected the first time I can actually connect in and execute the stored procedures, so I know they're at least there at that point.

What more do I have to do in RazorSQL than write a working "CREATE FUNCTION" block in order to cause the function to become persistent?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

慵挽 2024-11-15 06:16:26

在 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 数据库中)并在提交事务之前退出,因此效果被回滚。

In Informix, almost all SQL statements, both DDL and DML, are subject to transactions (the exceptions are CREATE DATABASE, DROP DATABASE and RENAME DATABASE).

There are several types of database in Informix - the key distinction for the current purpose is between 'MODE ANSI' and 'logged' and 'unlogged' databases.

  • A MODE ANSI database always starts a transaction when you execute a statement such as CREATE FUNCTION, and the transaction continues until you COMMIT [WORK], ROLLBACK [WORK] or exit the session (which is equivalent to ROLLBACK).
  • A logged database supports transactions, but each statement is a self-contained transaction unless you explicitly start a transaction with BEGIN [WORK]. Effectively, AutoCommit applies until you execute BEGIN WORK.
  • An unlogged database does not support transactions; each statement is more or less a self-contained transaction, with no mechanism to override this behaviour.

It seems to me that the most likely explanation of what you saw is:

  • You (or RazorSQL) started a transaction (explicitly with BEGIN WORK, or implicitly in a MODE ANSI database) and exited before committing the transaction, so the effects were rolled back.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文