sql server触发器的问题
有一个业务需要用到触发器:当users表中的某个user的信息被更新或者有新的user被insert进来的话,就把更新了的user信息或者新insert的user信息插入到另一个表backUpUsers.
我这边用到的是after update,insert的写法,然后从inserted内存表中拿user的数据。但是执行后发现,更新了的user信息可以插入到backUpUsers表中,但是更新前的那个user信息也会插入到backUpUsers表中。
不知道说清楚没有,举个例子吧:
users表
user_id user_name user_age user_tel user_address
1 s1234567A tester1 20 13787346725 beijing
2 s1234567B tester2 20 15876239087 sichuan
backUpUsers表
user_id user_name user_age user_tel user_address backUp_dte
1 s1234567A tester1 20 13787346725 beijing 2013-08-12
2 s1234567B tester2 20 15876239087 sichuan 2013-08-13
此时,users表中的user s1234567A的电话和住址被更新了,那么此时就要通过触发器把更新后的user s234567A重新insert到backUpUsers表中去,正确的情况下,backUpUsers表中的数据应该是这样:
backUpUsers表
user_id user_name user_age user_tel user_address backUp_dte
1 s1234567A tester1 20 13787346725 beijing 2013-08-12
2 s1234567B tester2 20 15876239087 sichuan 2013-08-13
3 s1234567A tester1 20 13087652378 shanghai 2013-08-14
但是现在却成了这样:
backUpUsers表
user_id user_name user_age user_tel user_address backUp_dte
1 s1234567A tester1 20 13787346725 beijing 2013-08-12
2 s1234567B tester2 20 15876239087 sichuan 2013-08-13
3 s1234567A tester1 20 13787346725 beijing 2013-08-12
4 s1234567A tester1 20 13087652378 shanghai 2013-08-14
也就是说,在insert更新的信息同时也把原来的user s1234567A又重新insert到backUpUsers表中,这个是不对的,那为什么会出现这种情况呢,希望大家可以帮着分析一下!!!
我这边用到的是after update,insert的写法,然后从inserted内存表中拿user的数据。但是执行后发现,更新了的user信息可以插入到backUpUsers表中,但是更新前的那个user信息也会插入到backUpUsers表中。
不知道说清楚没有,举个例子吧:
users表
user_id user_name user_age user_tel user_address
1 s1234567A tester1 20 13787346725 beijing
2 s1234567B tester2 20 15876239087 sichuan
backUpUsers表
user_id user_name user_age user_tel user_address backUp_dte
1 s1234567A tester1 20 13787346725 beijing 2013-08-12
2 s1234567B tester2 20 15876239087 sichuan 2013-08-13
此时,users表中的user s1234567A的电话和住址被更新了,那么此时就要通过触发器把更新后的user s234567A重新insert到backUpUsers表中去,正确的情况下,backUpUsers表中的数据应该是这样:
backUpUsers表
user_id user_name user_age user_tel user_address backUp_dte
1 s1234567A tester1 20 13787346725 beijing 2013-08-12
2 s1234567B tester2 20 15876239087 sichuan 2013-08-13
3 s1234567A tester1 20 13087652378 shanghai 2013-08-14
但是现在却成了这样:
backUpUsers表
user_id user_name user_age user_tel user_address backUp_dte
1 s1234567A tester1 20 13787346725 beijing 2013-08-12
2 s1234567B tester2 20 15876239087 sichuan 2013-08-13
3 s1234567A tester1 20 13787346725 beijing 2013-08-12
4 s1234567A tester1 20 13087652378 shanghai 2013-08-14
也就是说,在insert更新的信息同时也把原来的user s1234567A又重新insert到backUpUsers表中,这个是不对的,那为什么会出现这种情况呢,希望大家可以帮着分析一下!!!
...全文
相关推荐
SQL server 触发器,在触发Merge过程中,逐行触发的解决办法 用group by 避免是一次触发中的多行更新或删除。
在SQL Server中,触发器是一种数据库对象,它可以在数据更改(INSERT、UPDATE或DELETE)时自动执行。
一个在SQL Server下建立修改整列信息的触发器
在SQL Server中,触发器是一种特殊的存储过程,它在数据更改操作(如INSERT、UPDATE或DELETE)发生时自动执行。
SQL Server开发人员应聘常被问的问题妙解汇总
SQL Server 开发人员在应聘时常常会被问及一系列专业问题,这些问题旨在评估他们的技能水平和对SQL Server的理解程度。以下是一些常见的面试问题及其详细解答:1. **什么是数据库对象?
SQL Server 触发器 表的特定字段更新时,触发Update触发器
然而,过度使用触发器可能会导致性能问题,因为它们增加了数据库的开销,因此在设计数据库时应谨慎考虑其使用。关于SQL Server中的其他相关知识点:1.
sql server 2008 存储过程与储发器 详解 书籍
在SQL Server 2008中,可以通过图形化工具(如SQL Server Management Studio,简称SSMS)来创建、修改和管理存储过程和触发器,也可以使用T-SQL脚本来进行操作。


应用实例
