create trigger tri_site_ins_2 on dbo.site
for insert
as
declare @col1 int
select @col1 = column1 from inserted
insert A表 values(@col1,...)或
create trigger tri_site_ins_2 on dbo.site
for insert
as
insert A表 select column1,其它字段内容 from inserted
for insert
as
declare @col1 int
select @col1 = column1 from inserted
insert A表 values(@col1,...)或
create trigger tri_site_ins_2 on dbo.site
for insert
as
insert A表 select column1,其它字段内容 from inserted
for insert
as
declare @col1 int
select @col1 = column1+1 from inserted
insert A values(@col1,...)
第一条要求,其实就是记录B表中有多少条记录,这个还用建一个表来记录吗?
第二条要求,看不明白。根据col1的值,A表加1或减1,什么意思?如果是统计col1不为空的记录有多少行,也不用专门建一个表来记录这个值吧。
FOR INSERT,delete
AS
DECLARE @column1 int
select @column1= column1 from inserted
if @column1 is not null
update dbo.Property set NumberValue = @nSiteCount+1 where id=2
select @column1= column1 from deleted
if @column1 is not null
update dbo.Property set NumberValue = @nSiteCount-1 where id=2
-------------
???
CREATE TRIGGER TRI_Site_INS ON [dbo].[Site]
FOR INSERT
AS
update Property set NumberValue = a.NumberValue+1
from Property a join inserted on a.id=b.id
go--删除
CREATE TRIGGER TRI_Site_INS ON [dbo].[Site]
FOR delete
AS
update Property set NumberValue = a.NumberValue-1
from Property a join deleted on a.id=b.id
go
表A记录一些管理信息,(设计A表主要目的是便于管理)
其中有一条记录表示有多少个站点,字段NumberValue表示站点个数,这条记录ID为2
B表是站点表,
当B表增加或者删除一个站点,那么NumberValue就加一或者减一。功能二:B表表示站点的信息列表,其中有一个字段是是表示这个站点下有多少个栏目叫ColumnCount,
而C表表示栏目信息,其中有一个字段记录这个栏目属于那个站点,名称为SiteID
我想实现是这样的:当C表增加或者删除一个栏目的时候,那么找到SiteID值,B表ColumnCount就对应加一或者减一。我这个库原来是Oracle的,我不想改变表结果。
create trigger t_process on C
for insert,delete
as
update B set ColumnCount=aa.ColumnCount+1
from B aa on inserted bb on aa.SiteID=bb.SiteIDupdate B set ColumnCount=aa.ColumnCount-1
from B aa on deleted bb on aa.SiteID=bb.SiteID
go
再次感谢各位。