SQL触发器

yyhakusu 2007-12-05 03:26:22
各位好!
小弟想写一个触发器实现如下功能:
表名:data
字段:num,sign
当表中的记录条数>=200的时候,把sign=1的前100条记录拷贝到signdata表中,并在data表中删除这100条记录.
这个功能应该怎么实现呢?谢谢各位大虾!~~~
...全文
67 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyhakusu 2007-12-05
  • 打赏
  • 举报
回复
多谢各位~~问题解决了!! 一会加分,嘿嘿!~
冷箫轻笛 2007-12-05
  • 打赏
  • 举报
回复

create table data
(
id int,
aaa varchar(10),
[sign] int
)


create trigger t_1 on [data]
for insert
as
begin
declare @count int
select @count = count(1) from [data]
if @count >= 200
begin
insert into signdata(id,aaa,[sign])
select top 100 id,aaa,[sign]
from data
where [sign] = 1

set rowcount 100
delete from data where [sign] = 1
set rowcount 0
end
end

呵呵,抢分的速度也慢了好多
这样看起来会好一些?
冷箫轻笛 2007-12-05
  • 打赏
  • 举报
回复
create table data
(
id int,
aaa varchar(10),
[sign] int
)


create trigger t_1 on [data]
for insert
as
begin
declare @count int
select @count = count(1) from [data]
if @count >= 200
begin
insert into signdata(id,aaa,[sign])
select top 100 id,aaa,[sign]
from data
where [sign] = 1

set rowcount 100
delete from data where [sign] = 1
set rowcount 0
end
end


好久没有写sql了,写起来有点生疏
没有测试,楼主自己测一下吧
kk19840210 2007-12-05
  • 打赏
  • 举报
回复
create trigger t_date on date
for insert
as
begin
if (select count(1) from date) >=200
begin
insert into signdata
select top 100 * from date where [sign]=1
delete from date where num in (select top 100 num from date where [sign]=1)
end
end
-狙击手- 2007-12-05
  • 打赏
  • 举报
回复
create trigger triggername
on data
for insert
as
begin
select 1 from data
if @@rowcount >= 200
begin
insert signdata select top 100 * from data order by id
delete from data where exists(select 1 from signdata)
end
end

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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