首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sql检测更新触发器中修改的字段(sql server )?

在 SQL Server 中,您可以使用 DDL 触发器来检测更新操作并获取修改的字段。DDL 触发器是一种特殊类型的触发器,它在数据库级别上运行,并在执行 CREATE、ALTER、DROP 等数据定义语言 (DDL) 语句时触发。

要创建一个 DDL 触发器,您需要使用 CREATE TRIGGER 语句,并指定 FOR DDL_EVENTS 选项。在触发器内部,您可以使用 EVENTDATA() 函数来获取有关触发触发器的事件的信息。

以下是一个示例,演示如何在 SQL Server 中创建一个 DDL 触发器,以检测更新操作并获取修改的字段:

代码语言:sql
复制
CREATE TRIGGER trg_DDL_Events
ON DATABASE
FOR DDL_EVENTS
AS
BEGIN
    DECLARE @EventData XML
    SET @EventData = EVENTDATA()

    IF @EventData.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)') = 'ALTER_TABLE'
    BEGIN
        PRINT 'Table altered'
        PRINT 'Modified columns:'

        SELECT ModifiedColumns = @EventData.query('(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]').value('.', 'nvarchar(max)')
    END
END

在此示例中,触发器将在数据库级别上运行,并在执行 ALTER TABLE 语句时触发。在触发器内部,我们检查事件类型是否为 ALTER_TABLE,并打印出修改的列。

请注意,此示例仅用于演示目的,并且可能需要根据您的具体需求进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL Server触发器创建、删除、修改、查看示例步骤

大家好,又见面了,我是你们朋友全栈君。 一﹕ 触发器是一种特殊存储过程﹐它不能被显式地调用﹐而是在往表插入记录﹑更新记录或者删除记录时被自动地激活。...所以触发器可以用来实现对表实施复杂完整性约`束。 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表。...一﹕ 触发器是一种特殊存储过程﹐它不能被显式地调用﹐而是在往表插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂完整性约`束。...二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表。这两个表由系统来维护﹐它们存在于内存而不是在数据库。...三﹕Instead of 和 After触发器 SQL Server2000提供了两种触发器﹕Instead of 和After 触发器

1.4K30
  • 绕过SQL Server登录触发器限制

    使用SSMS欺骗应用程序名称 同样地你可能会问,“我们(攻击者)什么时候会在现实世界实际使用它呢?”。某些应用程序名称已经在连接SQL Server连接字符串静态设置。...这进一步说明我们成功欺骗了主机名检测。 SELECT APP_NAME() ?...一般建议 ---- 使用登录触发器时,不要根据客户端可以轻松修改信息来限制对SQL Server访问。 如果您希望使用白名单技术限制系统访问,请考虑使用网络或主机级防火墙规则,而不是登录触发器。...考虑根据用户组和访问权限来限制对SQL Server访问,而不是使用登录触发器。 在本文中,我介绍了一些鲜为人知利用连接字符串属性来绕过SQL Server登录触发器强制执行访问限制方法。...这些方法在对传统桌面应用程序渗透测试时,将非常有用。对于那些感兴趣的人,你还可以在这里查看我更新SQL Server连接字符串Cheatsheet”。

    2.1K10

    SQL ServerGUID

    GUID 主要用于在拥有多个节点、多台计算机网络或系统,分配必须具有唯一性标识符。...1、在 SQL Server 中使用 GUID 如果在 SQL Server 表定义中将列类型指定为 uniqueidentifier,则列值就为 GUID 类型。...SQL Server NewID() 函数可以产生 GUID 唯一值,使用此函数几种方式如下: 1) 作为列默认值 将 uniqueidentifier 默认值设为 NewID(),这样当新行插入表时...2)使用 T-SQL 在 T-SQL 中使用 NewID()函数,如“INSERT INTO Table(ID,… ) VALUES(NewID(),…)”来生成此列 GUID 值。...而 Guid 计算全部 16 个字节,这种差异可能会给 SQL Server uniqueidentifier 列排序带来一定影响,当然这种排序意义也不大。

    5.1K20

    批量更新数据小心SQL触发器陷阱

    批量更新数据时候,Inserted和Deleted临时表也是批量,但触发器只会调用执行一次!两个概念千万不要弄混淆!...错误理解;例如:创建在A表上创建了一个Update触发器,里面写是Update一条记录;当在A表进行update数据时候,会调用执行触发器一次,不可能因为触发器中有Update语句会又执行一次,那样岂不是死循环了...本文章转载:http://blog.csdn.net/baronyang/article/details/5174734 原来update触发器只会被update触发一次,无论更新记录数是多少,以下为验证代码...,发现TMP_TABLE1Amount字段值都更新为2000,但TMP_TABLE2Amount值只有第一条记录更新了,下面改一下触发器 Alter TRIGGER dbo.tmp_table1_update...FROM AmountCursor INTO @PersonCode,@Amount END CLOSE AmountCursor DEALLOCATE AmountCursor END 更新触发器

    1.2K10

    sql server 实验5.2 触发器建立与使用

    二、实验原理 1、 使用CREATE TRIGGER语句定义触发器,ALTER TRIGGER语句修改触发器,DROP TRIGGER语句删除触发器。...4、 SQL SERVER为每个触发器都创建了两个临时表INSERTED表和DELETED表,这两个表逻辑结构与被触发器作用表一样,用户可以读取这两个表内容,但不能对它们进行修改触发器执行完后,...当执行INSERT时,INSERTED表中保存要向表插入所有行;当执行DELETE时,DELETED表中保存要从表删除所有行;当执行UPDATE时,修改行保存在DELETED表修改行保存在...三、实验设备 安装有SQL SERVER 2000计算机。 四、实验示例 1、写一个允许用户一次只删除一条员工记录触发器。...') drop trigger unin_sales 6、针对employee表,定义一触发器用来保证实体完整性,阻止用户修改Employee表emp_no列。.

    2.1K20

    SQL SERVER修改函数名引起问题

    直接查询这个视图definition字段,发现跟sp_helptext是一样。难道是系统视图也存在缓存之类机制?或者是个BUG?对于第一个问题,当时情况紧急,没有时间去求证是否存在了。...第二个问题,我想没什么可能,SQL SERVER发展到今天(SQL 2016正式版准备推出,我使用环境则是SQL 2008 R2,打了SP3),已经是很成熟一个系统,即使是出现BUG也不是我这种水平的人能发现...我马上就想起这个函数在一个多星期前,因为测试需要,通过SSMS改了原函数名,而SQL SERVER不会因为改名去更新sys.all_sql_modules视图definition字段!...如果通过sp_helptext和sys.all_sql_modules查询出现定义去更新生产服务器,就肯定会出现问题。 ? 3. 解决与结论 解决方法也很简单,把这个函数重建即可。...结论: (1)尽量不要修改对象名,确实要修改的话,就重建吧。如果是表并且包含大量数据要重建的话,就比较麻烦了,即使是修改表名不会出现像函数、存储过程问题,但修改表名涉及应用程序等问题。

    1K130

    SQL server 数据库存储过程和触发器

    3、存储过程:SQL语句和控制句预编译集合,保存在数据库(resource),可由应用程序调用执行 优点:①模块化:一次创建,多次调用 ②速度快、效率高 ③减少网络流量 ④安全性好 分类:①系统存储过程...:以sp_ 开头 sp_databases :数据库信息 sp_tables :表和视图 sp_helptext :存储过程、触发器、视图信息 扩展存储过程,可以执行SQL命令,比如操作系统命令,...以xp_ 开头 ②用户自定义存储过程: 命令:create procedure 存储过程名 as SQL语句 执行:exec 存储过程名 可以添加、输入、输出参数值 4、触发器:对表进行插入...、更新、删除时自动执行存储过程 可以实现比check约束更复杂约束,通过事件而触发 分类:①insert触发器:插入数据触发 ②update触发器更新数据触发 ③delete触发器:删除数据触发...触发器表:存储在内存触发器完成则删除 inserted表:保存新增更新信息 deleted表:存放被删除和更新记录 命令:create trigger 触发器名 on 表名

    1.2K30

    SQL Server简单学习

    SQL Server通过锁,就像十字路口红绿灯那样,告诉所有并发连接,在同一时刻上,那些资源可以读取,那些资源可以修改。前面说到,查询本身可不是什么绅士,所以需要被监管。...开发人员不用担心SQL Server是如何决定使用哪个锁。因为SQL Server已经做了最好选择。     在SQL Server,锁粒度如表1所示。...从大类来看,SQL Server锁可以分为如下几类:      共享锁(S锁):用于读取资源所加锁。拥有共享锁资源不能被修改。共享锁默认情况下是读取了资源马上被释放。...更新锁(U锁) :U锁可以看作是S锁和X锁结合,用于更新数据,更新数据时首先需要找到被更新数据,此时可以理解为被查找数据上了S锁。当找到需要修改数据时,需要对被修改资源上X锁。...在SQL Server,资源是有层次,一个表可以包含N个页,而一个页可以包含N个行。当我们在某一个行中加了锁时。可以理解成包含这个行页,和表一部分已经被锁定。

    1.9K60
    领券