Sql server 2005 SQLServer2005触发器

Sql server 2005 SQLServer2005触发器,sql-server-2005,triggers,Sql Server 2005,Triggers,我有一张这样的桌子 table-1 Project-name proj-status ----------- ----------- pro1 progress pro2 progress pro3 progress 表-1 项目名称项目状态 ----------- ----------- 项目1进展 项目2进展 项目3进展 如果我将项目状态更新为已完成 Pro

我有一张这样的桌子

table-1 Project-name proj-status ----------- ----------- pro1 progress pro2 progress pro3 progress 表-1 项目名称项目状态 ----------- ----------- 项目1进展 项目2进展 项目3进展 如果我将项目状态更新为已完成

Project-name proj-status ----------- ----------- pro1 progress pro2 completed pro3 progress 项目名称项目状态 ----------- ----------- 项目1进展 项目2已完成 项目3进展 然后将其插入表2中

table-2 completed prject ---------------- pro2 表-2 已完成项目 ---------------- pro2
我想用触发器来做这个!请帮助我。

创建一个更新触发器,如下例中,我有一个emp表,当其员工更新为“已完成”时,员工id将复制到表emp1

ALTER TRIGGER [dbo].[updtrigg] 
ON  [dbo].[emp] 
AFTER UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    declare @emp as varchar(50)
    declare @empid as varchar(5)
    SELECT @empid = empid, @emp = employee  FROM   inserted
     if(@emp = 'completed')
     begin
        INSERT into emp1 (employee) values(@empid)
     end
END

我不会为你做你的工作。请记住,并非所有版本的SQL Server都支持触发器(Standard和Express不支持)@SJuan76-请原谅?Standard和Express确实支持触发器。为什么不使用一个视图将
table1
筛选到已完成的行呢?它总是正确的,而且您不必编写代码来更新它。我站在更正位置。我记得很久以前,我发现SQL Server 2000版本之间的触发器功能有些不同,但甚至找不到相关文档。您的触发器假定插入的
中只有一行。这通常不是一个安全的假设。这个问题只针对一次更新,因此答案是肯定的。如果有批处理更新,那么触发器就不是一个好办法,因为它会导致不必要的锁,我也会这样回答。对于多行插入,一个被破坏的触发器就是一个被破坏的触发器。此外,OP只是声明“如果我将项目状态更新为已完成”-他们没有提到更新是应用于单个语句中的一行还是多行。