Java Sql server 2005知道插入了新记录
在SQLServer2005中,除了写入触发器外,是否还有其他方法可以确定是否插入了新记录。(可以是tsql,也可以是java…) 由于供应商不允许在数据库上使用右触发器。。。Java Sql server 2005知道插入了新记录,java,sql-server,tsql,Java,Sql Server,Tsql,在SQLServer2005中,除了写入触发器外,是否还有其他方法可以确定是否插入了新记录。(可以是tsql,也可以是java…) 由于供应商不允许在数据库上使用右触发器。。。 以及如何使用新插入行的数据生成文件。。bcp是一个很好的解决方案吗?我建议一个最佳实践,它也可以帮助您解决这个问题。如果将更新和插入限制为仅通过存储过程,则可以使用该过程同时写出审核记录或仅更新时间/日期字段。表是否具有自动递增主键或createDate列?您可以编写一个定期唤醒的cron作业,并查询自上次运行cron作
以及如何使用新插入行的数据生成文件。。bcp是一个很好的解决方案吗?我建议一个最佳实践,它也可以帮助您解决这个问题。如果将更新和插入限制为仅通过存储过程,则可以使用该过程同时写出审核记录或仅更新时间/日期字段。表是否具有自动递增主键或createDate列?您可以编写一个定期唤醒的cron作业,并查询自上次运行cron作业以来数据库中是否有新的内容。您可以定义一个审核表,然后将输出命令添加到输入或更新语句中(顺便说一句,也可以删除)
我认为您需要定义“除了写入触发器外,是否有任何方法可以确定是否插入了新记录”。触发器基本上是SQL中的事件处理程序。那么,您是否希望在将新行插入表时触发触发器之类的东西?如果是,答案是肯定的,它被称为SQLServer通知服务 这里有一个例子,但我相信你可以通过谷歌“SQLServer通知”获得大量的结果
还有一篇好文章:时间戳还不够吗?或者一个标志:
new\u from\u last\u check bit default 0
CDC将有帮助??我在2008年获得了链接和教程,但我使用的是sql server 2005…CDC将提供帮助??我在2008年获得了链接和教程,但我使用的是SQLServer2005。
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