2016-12-02 53 views
0

选择一个值只需要调用另一个表中的SQL Server中的价值,但我得到了一些问题:如何在另一个表触发

CREATE TRIGGER [dbo].[IdHeadOtomatis] 
ON [dbo].[RollsNumberSimulation] 
FOR INSERT, UPDATE 
AS 
BEGIN 
    UPDATE [RollsNumberSimulation] 
    SET IdHead = (SELECT IdHead 
        FROM NewCutPlan 
        WHERE [IdNewCutPlan] = IdNewCutPlan) 
    WHERE [IdRollNumber] IN (SELECT [IdRollNumber] FROM Inserted) 
END 

这种查询可以插入,但如果在此插入“IdNewCutPlan”错误屏幕截图。

screenshot

请帮帮忙,

感谢, 邦

+0

你使用的是MySQL还是SQL Server?在前者中,不可能修改导致触发器触发的同一个表。这种递归触发器也可能在SQL Server中被关闭,并且在那里也许不可取。 –

+0

任何想法,?如何通过触发器或其他方式获取id值? – Bang

+0

最简单的路线可能是想一个合理的方法,不必在调用表上触发。也许你可以在你的业务逻辑处理它到达数据库之前处理它。 –

回答

0

根据你的错误消息的问题是,您要比较一个值多个值,特别是你的子查询返回不止一个值:

select IdHead from NewCutPlan where [IdNewCutPlan]=IdNewCutPlan 

可能问题在于你的问题te WHERE [IdNewCutPlan]=IdNewCutPlan这将永远评估为真,你可能只写WHERE 1=1。也许你的意思是其中一个是字符串'IdNewCutPlan'但没有更多的信息你真的想用你的触发器做什么,这很难猜测。

+0

任何想法,?如何通过触发器或其他方式获取id值? – Bang

+0

@Bang我不能推荐任何东西,因为你没有提供很多问题的背景。什么是表格,什么时候插入的数据会触发触发器,以及你想通过触发器达到什么目的。用这些更新这个问题,我们可以给出更具体的建议。 – mendosi