2016-12-02 55 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