Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sql server 2005知道插入了新记录_Java_Sql Server_Tsql - Fatal编程技术网

Java Sql server 2005知道插入了新记录

Java Sql server 2005知道插入了新记录,java,sql-server,tsql,Java,Sql Server,Tsql,在SQLServer2005中,除了写入触发器外,是否还有其他方法可以确定是否插入了新记录。(可以是tsql,也可以是java…) 由于供应商不允许在数据库上使用右触发器。。。 以及如何使用新插入行的数据生成文件。。bcp是一个很好的解决方案吗?我建议一个最佳实践,它也可以帮助您解决这个问题。如果将更新和插入限制为仅通过存储过程,则可以使用该过程同时写出审核记录或仅更新时间/日期字段。表是否具有自动递增主键或createDate列?您可以编写一个定期唤醒的cron作业,并查询自上次运行cron作

在SQLServer2005中,除了写入触发器外,是否还有其他方法可以确定是否插入了新记录。(可以是tsql,也可以是java…) 由于供应商不允许在数据库上使用右触发器。。。
以及如何使用新插入行的数据生成文件。。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