2013-01-31 57 views
0

我試圖在employeepayhistory表上創建一個觸發器。每當我更新表格中的RATE列時,應該顯示其對月薪的影響,但如果我更新一條記錄,它會給我整個記錄的月薪。請幫忙。觸發器返回所有行而不是一行的結果

CREATE TRIGGER MONTHTRG 
ON HumanResources.EmployeePayHistory 
FOR UPDATE 
AS 
BEGIN 
    DECLARE @Rate MONEY 
    SELECT @Rate=Rate FROM INSERTED 
    SELECT 'MONTHSAL'=Rate*PayFrequency*30 FROM HumanResources.EmployeePayHistory 
END 
+0

在PK列或標識列的觸發器上添加Where子句。 – Hiten004

+0

請注意,觸發器不應該用於返回數據。正如[文檔](http://msdn.microsoft.com/en-us/library/ms189799(v = sql.100).aspx)所述,「觸發器旨在檢查或更改基於數據修改的數據或定義聲明「。 – Pondlife

回答

0

你也需要給where條件,通常你會

DECLARE @Id bigint 
SET @Id = (SELECT Id from Inserted) 
SELECT 'MONTHSAL' = Rate * PayFrequency*30 From HumanResources.EmployeePayHistory where [email protected] 

這將工作如果主鍵被稱爲「ID」和ofcourse,是獨一無二的。您也可以使用唯一鍵(這應該是非NULL)來執行此操作。

相關問題