标签: dml

如何确定 PostgreSQL 中表的排序规则?

我想编写一个检查 PostgreSQL 表中使用的排序规则的脚本,但谷歌搜索Postgresql detect collation对我来说效果不佳,而且文档并没有让搜索变得容易。

谁能告诉我如何检查这个?

postgresql collation dml ddl

25
推荐指数
2
解决办法
3万
查看次数

在函数/过程中的 DML 操作之后是否需要提交?

我想知道是否有必要在函数/过程中插入/删除/更新后写入提交?

例子:

create or replace function test_fun
return number is
begin
   delete from a;
   return 0;
end;
Run Code Online (Sandbox Code Playgroud)

或程序

create or replace procedure aud_clear_pro
as
begin
   delete from a;
end;
Run Code Online (Sandbox Code Playgroud)

删除后需要提交吗?

无法理解以下情况:

  1. 如果我从 SQL 窗口调用函数/过程,那么它需要提交

  2. 如果我使用 dbms_scheduler 调度函数/过程并运行该作业,则会自动提交 delete 语句。

    为什么?

oracle stored-procedures dml functions

20
推荐指数
1
解决办法
5万
查看次数

尽管没有行受到影响,但触发触发

这更像是一个一般性问题,但这个问题的动机是我在使用 SQL Server 时遇到的一个问题。

我将此触发器附加到包含一些逻辑的表上的 Insert 事件,作为副作用,如果没有插入行,则会引发错误。经过进一步调查,我发现尽管没有插入行,但触发器仍在触发。

Microsoft Docs on DML Triggers 中使用的语言似乎与此行为相矛盾:

DML 触发器是一种特殊类型的存储过程,当发生影响触发器中定义的表或视图的 DML 事件时,它会自动生效。

这是跨 DBMS 的默认行为吗?当没有行受到影响时,是否有特殊原因触发触发器?

trigger sql-server dml

10
推荐指数
1
解决办法
2479
查看次数

为什么 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%');
Run Code Online (Sandbox Code Playgroud)

回应是:

Query OK, 0 rows affected (0.02 sec)
Rows matched: 618  Changed: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

我怎样才能追踪为什么没有进行任何更改?

编辑 1:

感谢 Aaron Bertrand,我发现它REPLACE()无法处理通配符,而且我完全错误地使用了它(想想:缺少WHERE子句)。这是我修改后的声明:

UPDATE [table]
SET [column] =
REPLACE (
    [column],
    'companydomain.com',
    'companydomain.org' )
WHERE
    [column]
LIKE
    '%companydomain.com%';
Run Code Online (Sandbox Code Playgroud)

我收到旧的,熟悉的:

Query OK, 0 rows affected (0.02 sec)
Rows matched: 167  Changed: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

编辑2:

我会告诉你我做错了什么!!我不是在质疑假设。我的 …

mysql dml

9
推荐指数
1
解决办法
2万
查看次数

顶级数据库供应商的 SQL (DML-) 方言彼此之间有何不同?

曾使用至少两种顶级 DB 产品(例如 Oracle、SQL Server、Informix、Sybase、DB2、Teradata)在 SQL 方面进行可扩展性工作的人是否知道 DB 供应商的 SQL 方言彼此之间有何不同。由于我来自 Oracle 背景,因此我对

  • 分析功能
  • 示范条款
  • 分层查询(start with .. connect by想到)
  • 任何其他比通常更多的功能 ( select x, y from a, b where...)

问题可能归结为这些功能是否以及在多大程度上受 ansi 标准的监管。

实际上,我想知道是否有“经验法则”可以指示我是否(以及如何)采用在一个数据库上运行的 SQL DML 语句并让它在另一个数据库上运行。

feature-comparison dml sql-standard

7
推荐指数
2
解决办法
4872
查看次数

查找删除或更新记录

最近几个月我发生了三起事件,其中表中的记录已被删除或整个表中的值更新为零。我们有一个由四人组成的团队,他们拥有权限并负责更新本可以执行此操作的数据库。令人失望的是,没有人承认进行了这些更改。

展望未来,我希望能够记录这些交易。我想知道其他人用什么来跟踪这些变化?他们使用跟踪更改的软件还是创建存储过程或跟踪文件?如果有人在他们的设施中设置了这个,我想知道他们使用什么。跟踪文件确实有我想要的信息,例如登录名机器号和 sql 语句,因此如果我提前设置它们,它将为我提供信息。

当这些更改发生时,我有数据库和事务日志的副本。我能用这些旧文件做些什么来帮助追查罪魁祸首吗?预先感谢任何回复的人。我们使用的是 SQL Server 2005。

sql-server-2005 audit dml

7
推荐指数
1
解决办法
2847
查看次数

如何记录由 pl/pgsql 函数执行的 DML 语句?

我有一个 pl/pgsql 函数(见下文),它列出了一些字段并使用动态构造的 UPDATE 命令清除它们的内容。

当我设置时log_statement = 'mod',我在执行函数时在日志上看不到任何内容SELECT fnct_clear_temp_fields();。当我设置log_statement = 'all'并执行我可以SELECT fnct_clear_temp_fields();在日志中看到的函数时,但看不到底层的 UPDATE 命令。

有没有办法让 UPDATE 命令也出现在日志中?

有关信息,这里是功能:

CREATE OR REPLACE FUNCTION fnct_clear_temp_fields() RETURNS VOID AS $$
DECLARE
    --Put into a cursor a view dynamically listing all user-defined fields beginning with 'temp_'
    dataset_1 CURSOR FOR 
        SELECT 
            column_name,
            table_name
        FROM information_schema.tables 
        NATURAL JOIN information_schema.columns 
        WHERE 
            table_schema='public'
            AND table_type='BASE TABLE'
            AND column_name ~ '^temp_'
        ORDER BY table_name,column_name;

    --Record variable to go through each line …
Run Code Online (Sandbox Code Playgroud)

postgresql dml plpgsql functions log

7
推荐指数
2
解决办法
6168
查看次数

在回滚的事务中仍会发生哪些事件?

当它们所属的事务被回滚时,所有​​数据修改都被撤消是真的吗?

例如,如果一个游标只执行了 100 次在每次迭代中更新表的存储过程,所有这些更新都会回滚吗?

DDL 语句会回滚吗?...例如 DROP TABLE 或 CREATE VIEW?DROP DATABASE 呢?

我知道某些语句仍然执行,尽管像 PRINT“MESSAGE”。

我只是想了解仍然会发生哪些类型的事件。

sql-server dml transaction ddl sql-server-2016

7
推荐指数
1
解决办法
384
查看次数

SELECT 语句是否计入 DML?

查看名称数据操作语言 (DML)我会假设,所有包含的语句实际上都是用于操作数据。

据我所知该SELECT语句只能用于查询数据,不能更改它。(INSERT ... SELECT这里不考虑。)

所以是SELECTDML 的一部分,如果是,为什么?

dml select database-theory

6
推荐指数
2
解决办法
9517
查看次数

Postgres DDL 和 DML 最佳实践和编码标准

是否有您可以共享和推荐的 Postgres DDL 和 DML/SQL 的最佳实践或编码/设计约定。

我正在寻找类似于谷歌编程的东西

先感谢您。

postgresql best-practices dml ddl

5
推荐指数
2
解决办法
3391
查看次数