一个触发器的简单问题?在线等待

yjy7604 2003-10-16 11:22:48
我建立了两个表Real和His,当Real中记录被全部删除时,把最后500个记录另存到His表中,触发器如何写?希望详细一点,我很菜。另外,我在表His中设了一个字段ID,自动增加的,如何能每次增加500个记录时,重新从1开始计数?多谢了!!
...全文
67 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
yujohny 2003-10-20
  • 打赏
  • 举报
回复
其实我们的答案早就解决了你的问题,只是你不懂使用而已

首先你把id字段的自增属性删除掉,不要自增
create trigger 名 on real
for delete
As
if (select count(*) from deleted) = (select count(*) from real)
select top 500 IDENTITY(int,1,1) id,* into #temp from deleted

insert his select * from #temp
yjy7604 2003-10-20
  • 打赏
  • 举报
回复
多谢大家了,我的问题虽然没有解决,可能是没有表达清楚。我把问题重新整理出来,盼望高手的指点。
zjcxc 元老 2003-10-16
  • 打赏
  • 举报
回复
如何能每次增加500个记录时,重新从1开始计数?多谢了!!
标识字段不能做这样的效果,你不要用标识字段.直接用整型字段就行了.

触发器:
create trigger t_delete on Real
for delete
as
if (select count(*) from deleted)=(select count(*) from real) --判断是否全部删除
begin
select id=identity(int,1,1),* into #tb from deleted
insert into His select * from #tb where id in(select top 500 id from #tb order by id desc)
end
yjy7604 2003-10-16
  • 打赏
  • 举报
回复
我试了一下,没有写进his 表中。
yujohny 2003-10-16
  • 打赏
  • 举报
回复
create trigger 名 on real
for delete
As
if (select count(*) from deleted) = (select count(*) from real)
select top 500 IDENTITY(int,1,1) id,* into #temp from deleted

insert his
select * from #temp

drop table #temp
yujohny 2003-10-16
  • 打赏
  • 举报
回复
你不要设为自动增加字段,自己来控制
这样你可以这样写触发器

create trigger 名 on real
for delete
As
if (select count(*) from deleted) = (select count(*) from real)
select top 500 IDENTITY(int,1,1) id,* into #temp from deleted

insert his
select * from #temp

--这样写触发器,每次插入的ID都是1开始
txlicenhe 2003-10-16
  • 打赏
  • 举报
回复
1:如果用自增字段,是不可能达到楼主所述要求的。
2:
create trigger 名 on real
for delete
As
if (select count(*) from deleted) = (select count(*) from real)
insert his select top 500 * from deleted

welyngj 2003-10-16
  • 打赏
  • 举报
回复
我在表His中设了一个字段ID,自动增加的,如何能每次增加500个记录时,重新从1开始计数
answer:
create table aa(
a int identity(1,1) not null,
b int)
go
create trigger tri_a
on aa
for insert
as
begin
declare @b int
select @b=@@identity
if (@b=5)
DBCC CHECKIDENT (aa, RESEED,0)
end
insert into aa select 2
insert into aa select 2
insert into aa select 2
insert into aa select 2
insert into aa select 2
insert into aa select 2
select * from aa
yjy7604 2003-10-16
  • 打赏
  • 举报
回复
我刚试了一下,错误如下:SQL无法使用SELECT INTO语句向表#'tb'中添加标识列,该表中已有继承了标识属性的列‘ID’,问题不知如何解决?
Quartz是功能强大的开源作业调度库,几乎可以集成到任何Java应用程序中-从最小的独立应用程序到最大的电子商务系统。Quartz可用于创建简单或复杂的计划,以执行数以万计,数以万计的工作。任务定义为标准Java组件的作业,它们实际上可以执行您可以对其执行的任何编程操作。Quartz Scheduler包含许多企业级功能,例如对JTA事务和集群的支持。 Quartz是免费使用的,并根据Apache 2.0许可获得许可。 Quartz作业调度的示例用法: 1、推动流程工作流程:最初下达新订单时,安排一个Job在正好2个小时内触发,这将检查该订单的状态,并在尚未收到该订单的订单确认消息时触发警告通知,并将订单状态更改为“等待干预”。 2、系统维护:计划一个工作,以便在每个工作日(除节假日以外的所有工作日)晚上11:30将数据库的内容转储到XML文件中。 3、在应用程序内提供提醒服务。 Quartz特征: 一、运行环境 1、Quartz可以嵌入另一个独立应用程序中运行 2、Quartz可以在应用服务器(或servlet容器)中实例化,并参与XA事务 3、Quartz可以作为独立程序运行(在其自己的Java虚拟机中),可以通过RMI使用 4、Quartz可以实例化为独立程序的集群(具有负载平衡和故障转移功能),以执行作业 二、作业调度 计划在给定触发器发生时运行作业。几乎可以使用以下指令的任意组合来创建触发器: 1、在一天中的特定时间(以毫秒为单位) 2、在一周的某些日子 3、在每月的某些天 4、在一年中的某些日子 5、不在注册日历中列出的某些日期(例如工作日) 6、重复特定的次数 7、重复直到特定的时间/日期 8、无限重复 9、延迟间隔重复 作业由其创建者命名,也可以分为命名组。还可以给触发器指定名称并将其分组,以便在调度程序中轻松组织触发器。作业可以一次添加到调度程序,但可以通过多个触发器注册。在企业Java环境中,乔布斯可以将其工作作为分布式(XA)事务的一部分进行。 三、工作执行 1、Jobs可以是实现简单Job接口的任何Java类,为Jobs可以执行的工作留下无限的可能性。 2、作业类实例可以由Quartz或由您的应用程序的框架实例化。 3、发生触发器时,调度程序会通知零个或多个实现JobListener和TriggerListener接口的Java对象(侦听器可以是简单的Java对象,EJB或JMS发布者,等等)。作业执行后,也会通知这些侦听器。 4、作业完成后,它们将返回JobCompletionCode,以通知调度程序成功或失败。JobCompletionCode还可以根据成功/失败代码指示调度程序应采取的任何操作,例如立即重新执行Job。 四、工作持久性 1、Quartz的设计包括一个JobStore接口,可以实现该接口以提供用于存储作业的各种机制。 2、通过使用随附的JDBCJobStore,所有配置为“非易失性”的作业和触发器都将通过JDBC存储在关系数据库中。 3、通过使用随附的RAMJobStore,所有作业和触发器都存储在RAM中,因此不会在程序执行之间持久存在-但这具有不需要外部数据库的优点。 五、交易次数 1、Quartz可以通过使用JobStoreCMT(JDBCJobStore的子类)来参与JTA事务。 2、Quartz可以在Job执行过程中管理JTA事务(开始并提交它们),以便Job所执行的工作自动在JTA事务中进行。 六、聚类 1、故障转移。 2、负载均衡。 3、Quartz的内置集群功能依赖于通过JDBCJobStore进行数据库持久化(如上所述)。 4、Quartz的Terracotta扩展无需群集数据库即可提供群集功能。 七、听众和插件: 1、应用程序可以通过实现一个或多个侦听器接口来捕获调度事件,以监视或控制作业/触发器的行为。 2、可以使用Plug-In机制为Quartz添加功能,例如保留作业执行的历史记录,或从文件加载作业和触发器定义。 3、Quartz附带了许多“工厂内置”的插件和监听器。

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧