복붙노트

[SQL] 어떻게 다른 테이블을 업데이트하는 업데이트 트리거를 사용 하는가?

SQL

어떻게 다른 테이블을 업데이트하는 업데이트 트리거를 사용 하는가?

나는 트리거에 새로운 오전 컬럼의 업데이트에 대한 트리거를 만들고 해당 값을 다른 테이블을 업데이트합니다.

나는 일년에 열이 표를 가지고 응용 프로그램 업데이트하면 그 년 같은 해에 업데이트 테이블 2 년 열 I의 필요.

ALTER TRIGGER [dbo].[trig_UpdateAnnualYear]
   ON  [dbo].[table1]
   AFTER UPDATE
AS 

if (UPDATE (intAnnualYear))   
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for trigger here

    Update table2 set AnnualYear = intAnnualYear where table2.ID = table1.ID
END

해결법

  1. ==============================

    1.당신은 트리거 내에서 표 참조하지 않습니다. 은 "후"값을 얻기 위해 삽입 된 의사 테이블을 사용합니다. 또한 업데이트가 여러 행에 영향을 미칠 수 있음을 기억하십시오.

    당신은 트리거 내에서 표 참조하지 않습니다. 은 "후"값을 얻기 위해 삽입 된 의사 테이블을 사용합니다. 또한 업데이트가 여러 행에 영향을 미칠 수 있음을 기억하십시오.

    그래서 당신의 현재 업데이트 문을 교체

    UPDATE table2
    SET    table2.annualyear = inserted.intannualyear
    FROM   table2
           JOIN inserted
             ON table2.id = inserted.id  
    
  2. ==============================

    2.당신은 열 intannualyear가 포함되어있는 경우 표 2에서 레코드를 업데이트해야합니다. 또한,이 마틴 보여 주었다 것과 두 테이블에서 다른 UPDATE 구문은

    당신은 열 intannualyear가 포함되어있는 경우 표 2에서 레코드를 업데이트해야합니다. 또한,이 마틴 보여 주었다 것과 두 테이블에서 다른 UPDATE 구문은

    IF UPDATE(intannualyear)
        UPDATE table2
        SET    annualyear = inserted.intannualyear
        FROM   inserted
        WHERE table2.id = inserted.id
    
  3. ==============================

    3.이 질문에 따르면, 하나의 "다운 스트림"테이블이 있다면 다음 제대로 정의 외래 키 관계에 또 다른 옵션은 계단식 업데이트 될 것입니다.

    이 질문에 따르면, 하나의 "다운 스트림"테이블이 있다면 다음 제대로 정의 외래 키 관계에 또 다른 옵션은 계단식 업데이트 될 것입니다.

  4. ==============================

    4.당신이 INNER가) (삽입, 삭제 또는 여러 UPDATE 호출 사이에 가입 사용할 수있는 하나 이상의 열을 확인해야하는 경우, 위의 답변을 보충하려면 :

    당신이 INNER가) (삽입, 삭제 또는 여러 UPDATE 호출 사이에 가입 사용할 수있는 하나 이상의 열을 확인해야하는 경우, 위의 답변을 보충하려면 :

    IF ( UPDATE(Col1) OR UPDATE(Col2) ) BEGIN ...
    
  5. from https://stackoverflow.com/questions/5252802/how-to-use-update-trigger-to-update-another-table by cc-by-sa and MIT license