sql 写一个触发器

来源:百度知道 编辑:UC知道 时间:2024/06/25 08:25:37
我有一表中,主键是A,另外还有两个字段B和C,我想做到字段B插入或更改时,把对应的值更新到C字段,不知道我表述清楚没,希望大家帮帮忙,本人对触发器不熟
CREATE TRIGGER 触发器名称
ON 表名
FOR INSERT,UPDATE
AS
DECLARE @A
DECLARE @B
UPDATE INVMB
SET C=INSERTED.B
FROM INVMB INNER JOIN INSERTED
ON A=INSERTED.A
这样可以么?

Create Trigger [dbo.UpInsTable]
ON [dbo.表名]
After Insert,Update
As
If Exists(Select Top 1 * From Deleted)--表示是修改操作.
UPDATE 表名 Set C=D.B
From 表名 A Inner Join DeleteD D On A.A=D.A
Else --表示是新增操作
UPDATE 表名 Set C=D.B
From 表名 A Inner Join Inserted D On A.A=D.A

PS:楼上的方法只能用于单一记录操作,如果是批量修改或批量新增的话,楼上的方法就会出错了..

CREATE TRIGGER [UDT_TABLE1i]
ON [TABLE1]/*[TABLE1]表名*/
FOR INSERT AS

DECLARE
@A char(10),
@B char(10),
@C char(10)

SELECT @A = A,
@B = B,
@C = C
FROM INSERTED

UPDATE TABLE1
SET C = @B
WHERE A = @A

/*INSERT的存储过程,具体可以自己增加,其他类触发器类似*/

create trigger 触发器名称
after insert or update on 表名
for each row
AS
begin
if inserting then
update 表名 set C=new.B where A=new.A;
elsif updating then
update 表名 set C=new.B where A=new.A;
end if;
end;