Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建一个触发器,用于在更新同一表中的不同列时更新表中的列-SQL_Sql_Sql Server_Tsql_Triggers - Fatal编程技术网

创建一个触发器,用于在更新同一表中的不同列时更新表中的列-SQL

创建一个触发器,用于在更新同一表中的不同列时更新表中的列-SQL,sql,sql-server,tsql,triggers,Sql,Sql Server,Tsql,Triggers,如何创建触发器,以便在更新同一表中的不同列时更新表中的列 到目前为止,我已经完成了以下工作,这些工作在创建任何新数据时都有效。它可以将数据从“请购单”复制到“采购订单号”,但是,当数据在“请购单”中修改后,“采购订单号”不会发生任何更改,并且该值变为空。我们将非常感谢您的任何帮助 ALTER TRIGGER [dbo].[PO_Number_Trigger] ON [dbo].[TheCat2] AFTER INSERT AS BEGIN UPDATE dbo.TheCat2 SET

如何创建触发器,以便在更新同一表中的不同列时更新表中的列

到目前为止,我已经完成了以下工作,这些工作在创建任何新数据时都有效。它可以将数据从“请购单”复制到“采购订单号”,但是,当数据在“请购单”中修改后,“采购订单号”不会发生任何更改,并且该值变为空。我们将非常感谢您的任何帮助

ALTER TRIGGER [dbo].[PO_Number_Trigger]
ON [dbo].[TheCat2]
AFTER INSERT 
AS BEGIN

   UPDATE  dbo.TheCat2 SET PO_Number=(select Purchase_Requisition from inserted)  where DocNo= (Select DocNo from inserted);
   END

这可能会满足您的要求: 您的触发器正在更改CAT2中的所有行。大概,您只想更改新的:

ALTER TRIGGER [dbo].[PO_Number_Trigger]
ON [dbo].[TheCat2] AFTER INSERT 
AS
BEGIN 
   UPDATE tc
       SET PO_Number = Purchase_Requisition
       FROM dbo.TheCat2 tc JOIN
            inserted i
            on tc.DocNo = i.DocNo ;
END;
但是,对于您的目的来说,计算列可能就足够了:

alter table add PO_Number as Purchase_Requisition;

您需要在触发器中添加“UPDATE”和insert,否则它将只在新数据上执行,而不会在更新的数据上执行。还将“top 1”添加到插入表中的select语句中,以便在批量更新时“安全”,但它只更新1条记录

ALTER TRIGGER [dbo].[PO_Number_Trigger]
ON [dbo].[TheCat2]
AFTER INSERT, UPDATE 
AS BEGIN

   UPDATE  dbo.TheCat2 SET PO_Number=(select top 1 Purchase_Requisition from inserted)  where DocNo= (Select top 1 DocNo from inserted);
END

您的触发器不是批处理安全的…非常感谢您,非常熟悉SQL脚本,并感谢您的帮助。总是乐于学习新东西。非常感谢。感谢所有的帮助。我很高兴在这里总能学到新东西。。