sql2005 触发器的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 07:38:19
现在有两张表:

a表,字段有a1,a2,a3
b表,字段有b1,b2

当向a表中添加一行新的数据时,用触发器自动把相同内容写入b表

要求b1=a1,b2=a2*a3

咋整?
我查了半天书,就有一个问题,怎么让触发器知道我要它写入b表的是刚刚输入的数据,而不是其他的

Create Trigger A_Insert On A For Insert As
Begin
Declare @la1,@la2,la3 integer
Insert Into b (b1,b2) Select a1,a2*a3 From Inserted
End

自己看看触发器再整,求人不如求己

写给你了,注意a表的a2、a3字段要为数字型 以为这里用了a2*a3

用法,新建查新,拷贝下面的运行就ok了

CREATE TRIGGER tr_Table1_Insert ON a
for insert
as
begin
INSERT b select a1,a2*a3 from a
end

仔细看看下面关于触发器的说明,相信你自己就能作出来了

<一>触发器是一种特殊类型的存储过程。存储过程是通过存储过程名被调用执行的,而触发器主要是通过事件触发而被执行的。

<二>触发器可通过数据库中的相关表实现级联更改。如果触发器表存在约束,则在instead of 触发器执行后after触发器执行前检查这些约束,如果约束破坏,则回滚instead of触发器操作并不执行after触发器.

<三>SQL Server为每个触发器都创建两个专用表:inserted表和deleted表。这两个表是逻辑表,不能修改,其表结构与被触发器作用的表的结构相同。触发器执行完毕后,与该触发器相关的这两个表会自动删除,

<三>当执行insert语句时,inserted表存放要向表中插入的所有行.

当执行delete语句时,deleted表存放要从表中删除的所有行。

当执行update语句时,相当于先执行一个delete操作,再执行一个insert操作。因此,老行首先移到deleted表中,新行插入激活触发器的表和inserted表。

<四>创建触发器格式:

crea