求一SQL语句(触发器)
有两个表 :
主表table1:no1,xh,a,b,c,d 其中no1为自增字段
子表table1:no2,xh,e,f,g,h,i,j 其中no2为自增字段
我想用触发器对主从表的插入、删除、修改,请问各位高手语句怎么写???谢谢!!
问题点数:40、回复次数:9Top
1 楼txlicenhe(马可)回复于 2003-09-02 18:45:25 得分 0
不知楼主想要什么?Top
2 楼fdlqcc()回复于 2003-09-02 18:48:53 得分 0
当子表增加记录时,能增加主表记录
当主表记录删除时自动删除子表记录,
这样的触发器语句怎么写????Top
3 楼yujohny(踏网无痕)回复于 2003-09-02 18:50:09 得分 5
怎么增加,增加哪些字段,就增加xh字段吗?Top
4 楼fdlqcc()回复于 2003-09-02 18:54:28 得分 0
我用触发器增加主表记录时可能是因为主表中有个自增字段所以会报错
CREATE TRIGGER Insert_table1 on table2
INSTEAD OF Insert
AS
BEGIN
insert table1 select * from inserted
END
错误是:仅当使用了列的列表,并且Identity_Insert为ON时,才能在表table1中为标识列指定显式值Top
5 楼txlicenhe(马可)回复于 2003-09-02 19:03:44 得分 10
create trigger yourTrigger on 子表
For insert
As
insert 主表(...) select ... from inserted
Create trigger yourTriggerName on 主表
For Delete
As
Delete 子表 where 关键字 in (select 关键字 from deleted)
Top
6 楼pengdali()回复于 2003-09-02 19:03:48 得分 5
去掉表2的标识属性。
如果你执意要这么做
先写
SET IDENTITY_INSERT yourtable ON
再写
insert...Top
7 楼pengdali()回复于 2003-09-02 19:03:49 得分 10
去掉表2的标识属性。
如果你执意要这么做
先写
SET IDENTITY_INSERT yourtable ON
再写
insert...Top
8 楼friendliu(无为)回复于 2003-09-02 19:07:29 得分 5
CREATE TRIGGER TEST ON TABLE1
FOR INSERT,DELETED
AS
BEGIN
IF(INSERTED)
BEGIN
INSERT INTO TABLE2(xh,e,f,g,h,i,j) SELECT xh,a,b,c,d,null,null from table1
END
IF(DELETED)
BEGIN
delete from table2 a where a.xh in (select xh from table1)
END
ENDTop
9 楼junny1017(好好学习,天天上网)回复于 2003-09-10 20:42:16 得分 5
CREATE TRIGGER TEST ON TABLE1
FOR UPDATE,INSERT,DELETED
AS
BEGIN
DECLARE @INSCOUNT INT ,@DELCOUNT INT
SELECT @INSCOUNT=count(*) from Inserted
select @DELCOUNT=count(*) from Delected
IF(@INSCOUNT>@DELCOUNT)
BEGIN
INSERT INTO TABLE2(xh,e,f,g,h,i,j) SELECT xh,a,b,c,d,null,null from table1
END
IF(@INSCOUNT<@DELCOUNT)
BEGIN
delete from table2 a where a.xh in (select xh from table1)
END
IF(@INSCOUNT=@DELCOUNT)
BEGIN
update table2 set table2.xh=(select xh form inserted) from table1 where table2.xh=table1.xh
END
END
Top



