Questions tagged «dml»

2
在功能/过程中进行DML操作后是否需要提交?
我想知道是否有必要在函数/过程中的插入/删除/更新之后写提交? 例: create or replace function test_fun return number is begin delete from a; return 0; end; 或程序 create or replace procedure aud_clear_pro as begin delete from a; end; 删除后需要提交吗? 无法了解以下情况: 如果我从SQL窗口调用函数/过程,则需要提交 但 如果我使用dbms_scheduler计划功能/过程并运行作业,则自动提交delete语句。 为什么?


1
尽管没有任何行受到影响,但触发触发
这更像是一个普遍的问题,但是这个问题的动机是我在使用SQL Server时遇到的一个问题。 我将此触发器附加到表上的Insert事件中,该事件包含一些逻辑,作为副作用,如果没有插入行,它将引发错误。经过进一步调查,我发现尽管没有插入行,但触发器仍在触发。 在DML触发器上的Microsoft文档中使用的语言似乎与以下行为矛盾: DML触发器是一种特殊的存储过程,当发生DML事件而该事件会影响触发器中定义的表或视图时,它会自动生效。 这是DBMS的默认行为吗?没有行受到影响时,是否有特定的原因触发触发器?

2
为什么UPDATE SET REPLACE()语句匹配行,但什么都不更改且不发出警告?
我正在字段中寻找某个字符串,并希望将其替换为新字符串。具体来说,我希望将对一个URL的所有引用都更改为另一个URL。我已经编写了此SQL语句,并mysql>使用MySQL Community Server 5.1.54在CentOS 5.5 上的提示符下运行它。 update [table] set [field] = REPLACE([field],'%domain.com%','%domain.org%'); 响应为: Query OK, 0 rows affected (0.02 sec) Rows matched: 618 Changed: 0 Warnings: 0 我如何跟踪为什么不进行任何更改? 编辑1: 多亏了Aaron Bertrand,我发现它REPLACE()无法处理通配符,而且我完全错误地使用了它(认为:缺少WHERE子句)。这是我修改后的声明: UPDATE [table] SET [column] = REPLACE ( [column], 'companydomain.com', 'companydomain.org' ) WHERE [column] LIKE '%companydomain.com%'; 我收到了古老的,熟悉的: Query OK, 0 …
9 mysql  dml 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.