복붙노트

[SQL] 다른 테이블에 새로운 행의 값 삽입 SQL 서버 트리거

SQL

다른 테이블에 새로운 행의 값 삽입 SQL 서버 트리거

나는 asp.net 회원 스키마를 사용하여 사이트가 있습니다. 나는 USER_ID와 다른 테이블에 새 행의 _ 이름을 삽입 aspnet_users 테이블에 트리거를 설정하고 싶습니다.

어떻게 마지막 삽입의 값을 받고 가야합니까?

나는 마지막 DATE_CREATED에 의해 선택할 수 있지만 그 냄새 나는 것 같다. 더 좋은 방법이 있나요?

해결법

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

    1.SQL Server의 경우이 시도

    SQL Server의 경우이 시도

    CREATE TRIGGER yourNewTrigger ON yourSourcetable
    FOR INSERT
    AS
    
    INSERT INTO yourDestinationTable
            (col1, col2    , col3, user_id, user_name)
        SELECT
            'a'  , default , null, user_id, user_name
            FROM inserted
    
    go
    
  2. ==============================

    2.사용자는 삽입 트리거 사용 - 트리거 내부에 삽입 된 행 항목 트리거가 정의되는 테이블과 동일한 열 레이아웃을 갖는 논리 INSERTED 테이블로 노출된다.

    사용자는 삽입 트리거 사용 - 트리거 내부에 삽입 된 행 항목 트리거가 정의되는 테이블과 동일한 열 레이아웃을 갖는 논리 INSERTED 테이블로 노출된다.

    삭제 트리거는 DELETED라는 유사한 논리적 테이블에 액세스 할 수 있습니다.

    업데이트 트리거는 업데이트 된 값 및 업데이트 할 값이 포함 된 DELETED 테이블을 포함 삽입 된 테이블 모두에 액세스 할 수 있습니다.

  3. ==============================

    3.당신은 방아쇠에서 변경 한 해당 값에 액세스 할 수 트리거 OLD와 NEW를 사용할 수 있습니다. MySQL의 참조

    당신은 방아쇠에서 변경 한 해당 값에 액세스 할 수 트리거 OLD와 NEW를 사용할 수 있습니다. MySQL의 참조

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

    4.SQL 서버 트리거에서 당신은 두 가지 psdeuotables 삽입과 삭제라는있다. 이 레코드의 이전 및 새 값이 포함되어 있습니다.

    SQL 서버 트리거에서 당신은 두 가지 psdeuotables 삽입과 삭제라는있다. 이 레코드의 이전 및 새 값이 포함되어 있습니다.

    트리거 내에서 그래서 당신이 뭔가를 할 것이다 (당신은 쉽게 트리거 부품을 만들 찾아 볼 수 있습니다)

    Insert table2 (user_id, user_name)
    select user_id, user_name from inserted i
    left join table2 t on i.user_id = t.userid
    where t.user_id is null
    

    쓰기 트리거가 정보의 전체 배치에 한 번 작동 기억, 그들은 프로세스 행별로 행을하지 않습니다. 그래서 코드에서 여러 행 삽입 차지한다.

  5. ==============================

    5.당신은 트리거의 컨텍스트에있을 때 당신은 테이블에 삽입 된 모든 행을 포함하는 논리적 테이블 INSERTED에 액세스 할 수 있습니다. 당신은 삽입에서 선택에 따라 다른 테이블에 삽입을 구축 할 수 있습니다.

    당신은 트리거의 컨텍스트에있을 때 당신은 테이블에 삽입 된 모든 행을 포함하는 논리적 테이블 INSERTED에 액세스 할 수 있습니다. 당신은 삽입에서 선택에 따라 다른 테이블에 삽입을 구축 할 수 있습니다.

  6. ==============================

    6.

    Create 
    trigger `[dbo].[mytrigger]` on `[dbo].[Patients]` after update , insert as
    begin
         --Sql logic
         print 'Hello world'     
     end 
    
  7. from https://stackoverflow.com/questions/2247679/sql-server-trigger-insert-values-from-new-row-into-another-table by cc-by-sa and MIT license