有下面的一个表,数据如下 ,想写一个触发器,当插入一条数据或改变表的[限期]时,列[整理后的限期]跟着
变,如公司1的5天跟7天都为整理后限期的7天,用CASE WHEN ,要判断公司公司号 限期 整理后限期
1 5天 7天
2 5天
1 7天 7天
2 7天
1 15天
2 13天
1 17天
变,如公司1的5天跟7天都为整理后限期的7天,用CASE WHEN ,要判断公司公司号 限期 整理后限期
1 5天 7天
2 5天
1 7天 7天
2 7天
1 15天
2 13天
1 17天
--没大搞明白lz的意思
create trigger tri_name on tb for update,insert
as
begin
--如公司1的5天跟7天都为整理后限期的7天
if exists(select 1 from inserted where 公司=1 and (期限=5 or 期限=7))
update TB set 整理后期限=7 where 公司=1 and (期限=5 or 期限=7)
end
on tb
for insert
as
if @@rowcount>0
begin
set nocount on
set ansi_warnings off
update tb set 整理后限期=7
where 公司号=1 and 限期 in(5,7)endCREATE trigger triu_tb
on tb
for update
as
If update(限期)
begin
set nocount on
set ansi_warnings off
update tb set 整理后限期=7
where 公司号=1 and 限期 in(5,7)end
ON dbo.tb
FOR INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON; -- Insert statements for trigger here
UPDATE t1 SET t1.整理后限期=t2.限期
from tb t1
INNER JOIN INSERTED t2 ON t1.公司号=t2.公司号 AND t1.限期=t2.限期
END
GOCREATE TRIGGER tr_UpdateDueTime1
ON dbo.tb
FOR UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON; -- Insert statements for trigger here
IF UPDATE(限期)
UPDATE t1 SET t1.整理后限期=t2.限期
from tb t1
INNER JOIN INSERTED t2 ON t1.公司号=t2.公司号 AND t1.限期=t2.限期
END
GO
现在写的大约是这样子了,不知能不能一个TRIGGER写好.像oracle那样if inserting begin那样子