这个触发器怎么写?(200分)

  • 主题发起人 主题发起人 cslegend
  • 开始时间 开始时间
C

cslegend

Unregistered / Unconfirmed
GUEST, unregistred user!
刚进公司,就碰见个难题,请大家帮忙。
有两个表,A中有ID1,ID2,Name...(ID1,ID2是共同主键) B中有ID1,ID2,Text等....
现在我在A中新增,修改,删除一条记录,B中要新增,修改,删除相应的记录。
如:添加一条:ID1 :001 ,ID2:2000的记录,则B中也添加一条ID1 :001 ,ID2:2000
的记录。 请问这样的触发器怎样实现(由于其他原因,不能在程序中使用代码实现)。

 
数据库是SQL SERVER 2000
 
我说错了,具体是这样的:
表A:ID1,ID2,Name (ID1,ID2是共同主键) 表2:ID1,ID2,Num(Num是数目)。现在在
表A中插入一条记录如:(001,200,‘终端1’),而表2中有三条记录
001,100,0
001,100,1
002,111,0
那么表2中就要插入两条记录:
001,200,0
001,200,1
就是这样的触发器,请问怎么实现,大侠帮忙啊。
 
create trigger your triggername on table A
for insert
as
declare tid1,tid2 int
declare tname varchar(255)
select tid1=id1,tid2=id2,tname=name from inserted
insert into table2(id1,id2,num) values(tid1,tid2,0)
insert into table2(id1,id2,num) values(tid1,tid2,1)


只是不知道name与num是怎么对应的
 
yoking:
表B中可能不止两条记录啊,比如有
001,100,0
001,100,1
001,100,3
001,100,4
那就要插入四条记录了:
001,200,0
001,200,1
001,200,3
001,200,4
 
我写了个触发器,但是总执行不对,各位看下哪有毛病
CREATE TRIGGER test ON [dbo].[TERMINAL_PARA]
FOR INSERT
AS
declare
@V_TERMINALTYPE smallInt,
@V_TERMINALID smallInt
declare v_cur Cursor for
select Distinct TERMINALTYPE,TERMINALID from TERMINAL_PARA_DEF
where TERMINAL_PARA_DEF.TERMINALTYPE=(Select TERMINALTYPE from Inserted)
Open v_Cur;
while (@@Fetch_status=0)
begin
FETCH V_CUR INTO @V_TERMINALTYPE, @V_TERMINALID;
Insert INTO TERMINAL_PARA_DEF (TERMINALTYPE,TERMINALNAME,PARA_ID,PARA_NAME,TERMINALID)
select TERMINALTYPE,TERMINALNAME,PARA_ID,PARA_NAME,@V_TERMINALID
from inserted;
FETCH next from v_cur
end;
 
给出的条件好像说的不是很明白
 
我自己解决了,谢谢各位帮忙
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部