问题标签 [ddl-trigger]

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 投票
0 回答
37 浏览

sql-server - 触发更改并创建表 SQL Server 2008

我想提供一个表,其中包含我数据库中表的所有更新和更改。例如:如果我在表中添加一个名为的列testColumnTest我的表将具有以下内容:

我试过这个sys.tablessys.columns但它不起作用

有人可以帮助我吗?

0 投票
1 回答
1139 浏览

postgresql - 有没有办法在添加列时创建触发器?

我正在使用 Postgres。我正处于开发的中间。我需要创建表 ABC 的副本。我将其命名为 XYZ。我试过了create table XYZ () inherits(ABC)。它工作正常,但是当我在 XYZ 上插入值时,表 ABC 也被填充(实际上)。当我运行类似这样的查询时,我得到了重复的值select * from ABC where id = 1。当我运行这样的查询时,我得到了正确的记录select * from only ABC where id = 1

这是,我不想使用“仅”。所以,我不认为继承是我需要的。我只想问当我更改(添加列)ABC时是否有办法在XYZ上自动添加列?

我不想为 ABC 和 XYZ 创建两个 alter 查询。我需要这两个表始终具有相同的列。任何想法?

0 投票
1 回答
160 浏览

sql - 访问 DDL 触发器中已删除对象的扩展属性

在 Sql Server 中,我想防止用户删除标有特定扩展属性的对象。我认为这可以通过 DROP 事件上的 DDL 触发器轻松完成。事实证明,这些触发器是在对象被删除后触发的,因此不再可能访问扩展属性,并且它们在事件数据中不可用。

有什么方法可以访问 DDL 触发器中已删除对象的扩展属性?

下面的代码不起作用,因为扩展属性已被删除:

0 投票
0 回答
42 浏览

.net - SQL CLR DDL 触发器来处理 SEQUENCE 创建

有没有办法在 SQL CLR DDL 触发器中处理创建SEQUENCE对象的过程,就像创建表一样?

0 投票
1 回答
1034 浏览

sql - 挑选出 EVENTDATA 的特定部分以在 DDL 触发器中使用?

当前触发器如下:

然后我运行以下 SQL 语句:

它输出以下内容:

执行了以下 SQL 语句:

更改表 dbo.TABLE

添加测试列 varchar(50)

下一步是弄清楚如何挑出添加的列名

消息 3609,第 16 级,状态 2,第 2 行

事务在触发器中结束。该批次已中止。

最终目标是挑出“TestColumn”以确保它不包含可能破坏内部程序的特定字符。例如,“TestColumn”将是一个有效的名称,但“Test.Column”不是。

将其单出并将其传递给新变量(“@ColumnName”?)以检查不需要的字符的最佳方法是什么?

0 投票
1 回答
888 浏览

oracle - oracle ddl 触发器:使用删除前创建备份表

我想用 ddl 触发器(在 drop 之前)创建一个备份表,并遇到了以下问题。

第一次 drop 发生时没关系: a_backup 表包含已删除表的数据。但是为什么在此之后我不能删除另一个表?

ORA-01031: 权限不足



-- 表 B 已创建。

-- 表 A 已创建。

-- 表 A_BACKUP 创建。

-- 触发 A_BACKUP_TR 编译


-- 表 A 掉线。


-- ORA-04045: 在重新编译/重新验证 TRANEE.A_BACKUP_TR 期间出错

-- ORA-01031: 权限不足

并且您不能在删除后删除任何表,除非您再次运行创建或替换触发器脚本。IF-THEN 部分有问题吗?当表 A 不存在时,IF 语句必须进入 NULL 吗?

0 投票
1 回答
799 浏览

oracle - Oracle DDL 触发器:如何检索有关事件发生的更多详细信息?

我想在 Oracle DB 上记录当时执行的所有 DDL 操作的历史记录。

我以这种方式创建了 aTABLE和 aDDL TRIGGER来做到这一点:

这非常有效:在每个 DDL 语句之后,我在 AUDIT_DDL 表中有一个新行。

但我仍然没有任何关于具体操作类型的信息。

例如,以下两个语句将ALTER在 AUDIT_DDL 表中生成相同的 SYSEVENT:

所以,通过这种方式,我不知道做了什么操作而不是泛型ALTER TABLE,我什至不知道 TEMP 列是否已被重命名或从表 MYTABLE 中删除!

我的问题是:如何在 DDL 执行后检索有关事件发生的更多信息(涉及的对象、详细信息等)?

0 投票
0 回答
83 浏览

postgresql - 有没有办法监控 PostgreSQL 中的所有 ddl 脚本?

我正在尝试将在数据库上运行的所有 ddl 脚本保存在表中。在 SQL Server 中,这可以通过在数据库上设置 DDL 触发器并从触发器上下文中的 EVENT_DATA 对象中获取脚本来实现。到目前为止,我还没有找到在 PostgreSQL 中做同样事情的方法。
甚至可能吗?

0 投票
1 回答
684 浏览

sql-server - 如何在登录 SQL 触发器中获取数据库名称

如何在登录触发器中获取数据库名称

尝试了几个tsql代码

高于DB_NAME总产量master

我正在尝试在登录触发器中获取数据库名称,但它在我尝试的任何方式下都不起作用……。下面DB_NAME总是master……我在这里尝试做的是阻止使用 excel 查询TESTDB数据库的用户……。

0 投票
0 回答
225 浏览

sql-server - 维护变更表的 DDL 触发器日志

维护 DDL 日志数据的表

在数据库上创建 DDL 触发器

创建表脚本

在 DDLAudit_All 表中插入一条记录,如下所示

执行 T-SQL 语句以更改数据类型长度,如下所示

在执行上述 alter 语句后,一条记录插入到 DDLAudit_All 表中,如下所示

更改了类似列的数据类型长度右键单击表名称-> 选择设计-> 将数据长度从 200 更改为 300 并保存更改。

完成上述流程语句后,在 DDLAudit_All 表中插入 4 条记录,如下所示

使用alter语句更改列的数据长度我们可以很容易地找到哪些列数据长度已更改,但使用设计窗口更改列的数据长度我们无法找到哪些列数据长度已更改。

当我们使用设计窗口更改数据长度时,如何知道哪一列数据长度发生了变化。