首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

简略Trigger

2013-07-16 
简单Trigger有下面的一个表,数据如下 ,想写一个触发器,当插入一条数据或改变表的[限期]时,列[整理后的限期

简单Trigger
有下面的一个表,数据如下 ,想写一个触发器,当插入一条数据或改变表的[限期]时,列[整理后的限期]跟着
变,如公司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

[解决办法]
CREATE trigger triI_tb
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)

end



CREATE 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

[解决办法]
CREATE TRIGGER tr_UpdateDueTime
   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
GO

CREATE 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
[解决办法]
触发器很简单,问题是你的算法不知道是怎样的,是不是能够实现。

热点排行