Sql server 2005 SQLServer2005触发器
我有一张这样的桌子 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 已完成项目 ---------------- pro2Sql 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
我想用触发器来做这个!请帮助我。创建一个更新触发器,如下例中,我有一个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只是声明“如果我将项目状态更新为已完成”-他们没有提到更新是应用于单个语句中的一行还是多行。