表A
列:a(关键字),b,c,d,e,f表B
列:a(关键字),c,d,f要求在表A修改、删除、插入的时候,表B跟着变化修改删除或插入说白了,就是一模一样,但是表B操作的时候不影响表A求 SQL 2000 个人版 的代码
列:a(关键字),b,c,d,e,f表B
列:a(关键字),c,d,f要求在表A修改、删除、插入的时候,表B跟着变化修改删除或插入说白了,就是一模一样,但是表B操作的时候不影响表A求 SQL 2000 个人版 的代码
FOR INSERT,DELETE,UPDATE
AS
BEGIN
DELETE B FROM B WHERE EXISTS(SELECT 1 FROM DELETED D WHERE D.A=B.A)
UPDATE B SET C=I.C,D=I.D,F=I.F FROM B,INSERTED I WHERE B.A=I.A
INSERT B SELECT A,C,D,F
FROM INSERTED I WHERE NOT EXISTS(SELECT 1 FROM B WHERE I.A=B.A)
END
1、楼主不要以菜鸟、新手的名义叫别人直接给出代码,对你成长没用处,当年我们读书的时候网络还不发达,难道就不学拉?思考才是最重要的。我本人比较反感什么东西都问代码,然后拿到了自己执行一下没问题就了事,也不去分析的。我没见过那个高手是拿别人代码就能成功的。如果有,介绍一下我认识。
2、我反而建议全大写,因为有些DBMS是要把关键字全部转换成大写再编译、运行的。而且最起码关键字要全大写,这虽然看上去不重要,但是到后期维护的时候你就感觉得到了。这些建议都是一些大牛提出来的。
3、你的要求完全可以使用表的级联来实现,只要两表是有关联的。而且设置了外键,详细请查阅联机丛书或者教材,我不会给出例子的。同时1楼的代码还有很大改进空间,估计是他只是给了个例子你参考而已,尽量不要直接用。
4、你最后一句应该改成SQL Server2000的代码,只要是2000的,所有版本都是可以通用的,只是一些高级功能可能需要企业版这些才能运行。05、08、2012同理。
SELECT 1 FROM DELETED D WHERE D.A=B.A 条件是** 这句不理解怎么多了个D表
CREATE TRIGGER TRI_GZ ON GP_GZ_XXB
FOR INSERT,DELETE,UPDATE
AS
BEGIN
DELETE VK_GZ
FROM VK_GZ
WHERE EXISTS(SELECT 1 FROM DELETED D WHERE D.GZ_BH=VK_GZ.GZ_BH)
UPDATE VK_GZ
SET GZ_MC=I.GZ_MC,GZ_DZ=I.GZ_DZ,GZ_MM=I.GZ_MM,SCBS=I.SCBS
FROM VK_GZ,INSERTED I
WHERE VK_GZ.GZ_BH=I.GZ_BH
INSERT VK_GZ
SELECT GZ_BH,GZ_MC,GZ_DZ,GZ_MM,SCBS
FROM INSERTED I
WHERE NOT EXISTS(SELECT 1 FROM VK_GZ WHERE I.GZ_BH=VK_GZ.GZ_BH)
END