2014-03-05 84 views
1

我想創建一個觸發器插入更新和刪除與其他表連接的表 當發生上述任何一種情況時觸發器應該從插入的表和其他從連接表 ,並將這些到另一個表sql服務器觸發從連接表中提取數據

這裏值是一個簡單的答案,但我正在逐漸對員工的錯誤加盟說的多部分組成的標識符無法綁定

Create TRIGGER triggertest 
ON salary 
FOR INSERT 
AS 
BEGIN 


DECLARE @salary int 
DECLARE @firstName int 


SELECT @salary = i.salary, @firstName =employee.firstName 
FROM inserted i 


     INNER JOIN employee ON 
      i.employeeID = emplopyee.employeeID 
     INNER JOIN deleted d ON i.salaryID = d.salaryID 





    INSERT INTO testTAble 
    (employeeFirstName,EmployeeSalary) 
    select @firstName ,@salary 

END 
+1

「firstname」列的數據類型是什麼? –

+0

親愛的,在INSERT觸發器中,您不能使用DELETED表。超出範圍 –

+0

@DipenduPaul它看起來應該是一個varchar,但用戶有它作爲int –

回答

1

可按您的要求:

INSERT

CREATE TRIGGER triggertestI 
ON salary 
FOR INSERT 
AS 
BEGIN 
    INSERT INTO testTAble 
    (employeeFirstName,EmployeeSalary) 
    SELECT i.salary, employee.firstName 
    FROM inserted i 
    INNER JOIN employee 
    ON i.employeeID = employee.employeeID 
END 

UPDATE

CREATE TRIGGER triggertestU 
ON salary 
FOR UPDATE 
AS 
BEGIN 
    UPDATE testTAble 
    SET EmployeeSalary = 
    (SELECT i.salary 
    FROM inserted i 
    INNER JOIN employee 
    ON i.employeeID = employee.employeeID 
    where i.employeeID = testTable.employeeID) 
END 

DELETE

CREATE TRIGGER triggertestD 
ON salary 
FOR DELETE 
AS 
BEGIN 
    DELETE FROM testTAble 
    WHERE employeeID in (
    SELECT i.employeeID 
    FROM deleted i 
    INNER JOIN employee 
    ON i.employeeID = employee.employeeID 
    where i.employeeID = testTable.employeeID) 
END 

P.S.我認爲,在您的查詢中,錯誤是:emplopyee(您在表名員工中添加了偶然的un p)

0

錯誤這裏:

i.employeeID = emplopyee.employeeID 

額外'p'已添加到您的emplopyee.employeeID中。 emplopyee必須employee