已插入知道新记录的SQL Server 2005

是否有任何方法可以找出是否插入新记录而不是在sql server 2005中写入触发器。(它可以是tsql或java …)因为供应商不允许在那里触发DB …也如何用新插入的行数据生成一个文件..是一个很好的解决方案?

您可以定义审计表,然后将OUTPUT命令添加到INPUT或UPDATE语句(DELETE也是,顺便说一句)。

 create table fab4 (id int identity(1,1),FName varchar(80)); create table fab4_audit (act varchar(10),id int, FName_old varchar(80), FName_new varchar(80), ts datetime not null default(getdate())); -- insert insert into fab4(FName) output 'INSERTED' , inserted.* into fab4_audit([act],id,FName_new) select 'John' union all select 'Paul' union all select 'George' union all select 'Ringo'; go -- update update f set FName='Walrus' output 'UPDATED' , inserted.id , deleted.FName , inserted.FName into fab4_audit([act],id,FName_old,FName_new) from fab4 f where FName='Paul'; -- delete delete f output 'DELETED' , deleted.id , deleted.FName into fab4_audit([act],id,FName_old) from fab4 f where FName in ('John','George'); go select * from fab4; select * from fab4_audit; go 

我会建议一个最好的做法,也可以帮助你在这里。 如果限制更新和插入仅通过存储过程,则可以使用该proc来写出审计记录或只更新时间/日期字段。

该表是否具有自动增量主键或createDate列? 您可以编写一个定期唤醒的cron作业,并查询自上次运行cron作业以来是否有任何新内容出现在数据库中。

我认为您需要定义“有没有办法找出是否插入新记录而不是写入触发器”。 触发器基本上是SQL中的事件处理程序。 那么你是否希望在将新行插入表时触发类似触发器的触发器? 如果是这样,答案是肯定的,它被称为SQL Server Notification Services。

这是一篇初学者文章 ,但我相信你可以只是google“sql server notification”并获得大量的结果。

这是另一篇好文章: 使用SqlDependency监视SQL数据库更改