2013-03-26 1 views
0

나는 하나의 테이블 Products을 가지고 있으며 동일한 데이터를 가진 동일한 열을 가진 다른 테이블 Products_audit의 데이터에서 변경 (새로운 데이터)을 업데이트하기 위해 트리거를 생성해야합니다.감사 추적을위한 트리거를 만들어야 "잘못된 구문이 표시됩니까?"

나는 다음 시도했다 :

CREATE TRIGGER Super 

ON Products 

AFTER INSERT, UPDATE 

AS 

UPDATE Product_audit (Column1,Column2, Column3, ...) 

SELECT (Column1,Column2,Column3,...) 

FROM Products 

을 다음과 같은 오류를 수신 :

Server: Msg 170, Level 15, State 31, Procedure Super, Line 20 
Line 20: Incorrect syntax near '('. 
Server: Msg 170, Level 15, State 1, Procedure Super, Line 24 
Line 24: Incorrect syntax near ','. 

내가 사용하는 SQL Server는 내가의 다른 너무 강해 아니에요 2000

창조 당신을 수 트리거 정정 해주세요. 내가 어디 잘못되었는지 알고 싶습니다.

+0

select-clause에는 괄호가 있어서는 안됩니다. –

+0

그래, 그들을 제거 감사 덕분에 – user2206639

답변

0

난 당신과 같이 할 필요가 트리거 생각 :

CREATE TRIGGER Super 

ON Products 

AFTER INSERT, UPDATE 

AS 

UPDATE Product_audit 

SET Column1 = p.Column1 
SET Column2 = p.Column2 

FROM Products p 
+0

어쨌든 도움이 되었습니까? – veljasije

+0

Nop받는 다음 : 서버 : 메시지 170, 수준 15, 상태 1, 프로 시저 Super1, 줄 29 줄 29 : '@UnitsInStock'근처의 구문이 잘못되었습니다. 서버 : 메시지 170, 수준 15, 상태 1, 프로 시저 Super1, 줄 46 줄 46 : 'UnitsInStock'근처의 구문이 잘못되었습니다. 내가 어디 잘못되었는지 모르겠다. – user2206639

+0

작성한 내용을보기 위해 노력했다. – veljasije

0

안녕하세요

CREATE TRIGGER Super 
ON Products 
AFTER INSERT 
AS 
BEGIN 

INSERT INTO Product_audit 
(Column1,Column2,...) 
SELECT Column1,Column2,... 
FROM Inserted 

END 

이 삽입

를 들어 두 개의 서로 다른 업데이트에 대한 트리거를 하나 삽입 1 일)을 만들어야합니다) 업데이트의 경우

CREATE TRIGGER Super 
    ON Products 
    AFTER Update 
    AS 
    BEGIN 

    DECLARE @Column1 as varchar(10) 
    DECLARE @Column2 as varchar(10) 
    DECLARE @ID INT 

    SELECT @ID=ID,@Column1=Column1,@Column2=Column2 FROM INSERTED 



    UPDATE Product_audit SET [email protected],[email protected] 
    WHERE [email protected] 

    END 
+0

그리고 변수 @ ID = ID가 무엇을 의미하는지 설명해주십시오. – user2206639

+0

그리고 INSERTED 대신 FROM UPDATED를 의미 할 수 있습니까? SELECT @ ID = ID, @ Column1 = Column1, @ Column2 = Column2 FROM INSERTED – user2206639