问题标签 [dml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1328 浏览

postgresql - SQL Servfer 的 CONTEXT_INFO 的 PostgreSQL 等价物是什么?

关于我的另一个问题“审计日志删除的最佳方法是什么?” . PostgreSQL 相当于CONTEXT_INFO什么?

我想使用触发器记录删除,但由于我没有将数据库用户用作我的应用程序的逻辑用户,因此我无法CURRENT_USER将触发器代码中的用户记录为删除记录的用户。但是对于INSERT并且UPDATE可以从触发器记录记录更改,因为您可以在记录中添加一个用户字段,比如inserted_byand last_updated_by,并使用这些字段记录到审计表。

0 投票
2 回答
897 浏览

database - 有没有比较好的参考卡可以并排比较 T-SQL 和 PL/SQL?

我正在寻找一个很好的参考卡/备忘单,它可以并排比较 T-SQL 和 PL/SQL 数据操作语言命令。

我之前搜索过 SO,但没有任何较旧的线程涵盖这个特定主题,所以我认为开始一个是个好主意,因为如果你碰巧在两种技术都使用的环境中工作,这样的参考几乎是强制性的共存。

提前非常感谢!

0 投票
3 回答
1512 浏览

java - 对需要在事务中的 DDL 语句进行单元测试

我正在开发一个使用 Oracle 内置身份验证机制来管理用户帐户和密码的应用程序。该应用程序还使用行级安全性。基本上,通过应用程序注册的每个用户都会获得一个 Oracle 用户名和密码,而不是“USERS”表中的典型条目。用户还会收到某些表格上的标签。这种类型的功能要求在许多情况下将 DML 和 DDL 语句的执行结合起来,但这会带来一个问题,因为 DDL 语句执行隐式提交。如果在 DDL 语句执行后发生错误,事务管理不会回滚所有内容。例如,当新用户向系统注册时,可能会发生以下情况:

  1. 开始交易
  2. 将人员详细信息插入表中。(即名字、姓氏等)-DML
  3. 创建一个 oracle 帐户(创建由密码标识的用户 testuser;) -DDL 隐式提交。交易结束。
  4. 新交易开始。
  5. 执行更多 DML 语句(插入、更新等)。
  6. 发生错误,事务只回滚到第 4 步。

我了解上述逻辑按设计工作,但我发现很难对此类功能进行单元测试并在数据访问层对其进行管理。我让数据库关闭或在单元测试期间发生错误,导致测试模式被本应回滚的测试数据污染。发生这种情况时擦除测试模式很容易,但我担心生产环境中的数据库故障。我正在寻找管理这个的策略。

这是一个 Java/Spring 应用程序。Spring 提供事务管理。

0 投票
5 回答
376 浏览

sql - SQL Server:将列提取到表中

我有一个表,其中有一列我想提取出来并放入一个单独的表中。

例如,假设我有一个名为 Contacts 的表。Contacts 有一个名为 Name 的列,其中存储了一个字符串。现在我想将名称提取到另一个名为 Name 的表中,并将 Contact.Name 列链接到 Name 表的 Id。

我只能使用 SQL 来执行此操作。关于解决此问题的最佳方法的任何想法?

如果我能澄清任何事情,请告诉我,谢谢!

[编辑] 一个问题是不同的联系人可以绑定到同一个名字。因此,当不同的联系人具有相同的名称并且它被导出时,名称表将只有该名称的一个唯一行,并且所有联系人都将指向该行。我想如果我实际上是在编写通讯录,这将没有意义,但我只是用它来说明我的问题。

0 投票
5 回答
181 浏览

sql - 术语:DML“修改事物”

我了解 DML 在技术上包含仅查询但不修改持久数据的 SQL 动词。(参见,例如,wikipediaoracleorafaq

但是,我经常希望提及“所有且只有那些修改存储/持久数据的 SQL 动词”——基本上INSERT是 , UPDATEDELETE不是普通的SELECT. 对于 DML 的这个子集,是否有官方/标准化术语,或者可能单独存在一个有说服力和优雅的术语?

0 投票
1 回答
3157 浏览

sql - 是否允许在流水线 PL/SQL 表函数中使用 SELECT?

流水线函数的文档说 DML 在 SQL 语句(通常是 a )中使用时是不允许的SELECT,并且在大多数示例中,流水线函数用于数据生成或转换(接受 custor 作为参数),但不发出任何DML 语句。

现在,从技术上讲,可以使用 SELECTs 而不会出现 Oracle 的任何错误(不会出现ORA 14551 )。但是,我遇到了可重现的选择奇怪行为;即使PRAGMA AUTONOMOUS_TRANSACTION没有被使用,检索到的行似乎并不总是考虑当前的本地事务,这对我来说就像一个错误。更令人不安的是,当使用分布式事务(例如通过 ORAMTS 而不是本地事务)时,会使用事务。SELECT

编辑:事实证明,奇怪的效果似乎与查询中的某些 WITH 语句有关,这些语句有时有效,有时无效(取决于 Oracle 优化器的当前情绪,至少在 10g 中)。在某些情况下,我得到一个 ORA-32036,然后它又没有发生,根本没有更改代码。现在看起来,有时使用 ORA-32036 失败的查询似乎也未能使用正确的事务,并且可能与流水线功能无关。

所以我的具体问题是:

  • 是否有任何(最好是官方的)声明是否SELECT允许流水线表函数中的 s 以及它们的事务上下文是什么?

  • 是否有另一种模块化可以在 SQL 语句中使用的常用查询的方法(就像表函数可以使用TABLE())?

  • 有没有人也经历过这种行为,并且可能对此了解更多?我研究了metalink,但不幸的是我没有找到任何关于这个主题的具体内容。

0 投票
5 回答
21333 浏览

sql-server - SQL Server 触发器切换插入、删除、更新

您好可以在触发器主体上的 DML 命令/操作(插入、删除、更新)之间切换吗?我尝试摘录一些 T-SQL 以更好地理解我:

谢谢,

0 投票
1 回答
561 浏览

sql - 针对在 DML 触发器中插入的已删除的 DDL 语句

我试图找出对表触发器中删除和插入的逻辑表执行 DDL 语句的影响。我有:

当它被触发时,我预计会得到一个错误。相反,它似乎完全忽略了 create table 语句并选择已插入的行。

是否有描述这种行为或解释的文档?

0 投票
4 回答
1795 浏览

mysql - MySQL错误?“SHOW TABLE STATUS”报告导入期间行数波动

我正在将 410 万条记录导入离线系统,以对我们数据库的一个子集进行一些分析。在运行导入时,我正在尝试使用以下方法检查其进度:

奇怪的是......在不同的时间,我看到Rows. 我希望它只会上涨。以下是输出示例:

这种行为有解释吗?有没有更好的方法来检查我的导入进度?

运行以下版本: 服务器版本:5.0.32-Debian_7etch11-log Debian etch 发行版


编辑:

这是DDL。这是一个 MyISAM 表:

提前致谢,

-aj

0 投票
2 回答
9938 浏览

sql - mysql @@identity 与 sql-server last_insert_id()

我是否正确理解 mysql 的 LAST_INSERT_ID() 函数在插入尝试之间不会重置(就像@@identity 在 sql-server 中所做的那样)......如果前面的插入操作失败,LAST_INSERT_ID() 将返回任何内容的 pk该连接最后一次插入具有自动递增主键的任何表的 pk 是。如果我在这点上是正确的,这似乎不只是人们可以想出的这个功能最迟钝的行为吗?是否没有 mysql 函数的行为类似于 sql-server 的@@identity?如果前面的插入尝试没有创建新记录,将返回 NULL吗?或者,如何确定最近插入操作的主键?