2014-07-15 2 views
0

전에 문제를 검색하려고했지만 한 문장으로 요약하는 방법조차 모릅니다. 그래서 나는 그 질문이 그다지 어렵지 않을 것이라고 확신합니다. 설명하려고 시도하겠습니다SQL Server 트리거 문제

오픈 소스 CRM (SugarCRM)에서 작업 중이며 CRM에 새 "역할"을 만들 때 두 개의 다른 테이블에서 두 개의 삽입 쿼리가 수행됩니다. role 및 role_custom

내 방아쇠가 role_custom에 있고 아주 잘 실행됩니다. 그러나 삽입 쿼리는 먼저 role_custom에서 수행 된 다음 role에서 수행됩니다. (나는 SQL Server Profiler를 사용하여 그 사실을 알아 냈습니다.)

문제는 트리거가 실행 된 후 삽입되는 정보가 필요하다는 것입니다. 트리거를 시작하기 전에 역할 테이블에서 수행 된 삽입 쿼리가 완료 될 때까지 기다리려면 어떻게해야합니까?

그 문제는 어떻게 발생합니까? 여기

(정말. BTW 내 영어에 대한 죄송합니다)

(미래 myselfish의 연구를 위해) 내가

ALTER TRIGGER 
[dbo].[trg_insert_update_tdr_type_cstm_copy_of_info] 
ON [sugarCRM].[dbo].[tdr_type_cstm] 
FOR INSERT, UPDATE 
AS 
    UPDATE 
     [sugarCRM].[dbo].accounts_cstm 
    SET 
     date_of_c = (SELECT date_autorisation_of_c 
        FROM inserted), 
     numero_of_s_c = (SELECT autorisation_of_c 
         FROM inserted) 
    WHERE 
     accounts_cstm.id_c = (SELECT account_id 
           FROM [SugarCRMReporting].dbo.uv_account_contact 
           WHERE role_id = (SELECT id_c 
               FROM inserted) 
          ) 
GO 

그 ... 어쩌면 방법을 찾는 데 도움이 될 수있는, 내 방아쇠를 넣어 [SugarCRMReporting ] .dbo.uv_account_contact 실제로

+0

내가 당신을 아주 무엇을 해결할 수 없습니다 묻고있어? 죄송합니다 – franglais

+0

두 번째 트리거에서 첫 번째 트리거 중에 생성되는 정보가 필요합니까? – schlonzo

+0

방금 ​​방아쇠가 하나 있습니다. 그냥 알기 쉽습니다. 문제는 트리거가 실행 된 후 업데이트되는 테이블에 대한 내 정보가 필요하다는 것입니다. – Indray

답변

1

을 시청 (내 트리거 그나마 내가 생각 삽입 작동 그 이유는 ...) 역할 표 안에

감사를 읽고 우리의 경우 삽입/업데이트 역할과 새 필터를

UPDATE 
    account 
SET 
    account.date_of_c = inserted.date_autorisation_of_c, 
    account.numero_of_s_c = inserted.autorisation_of_c 
FROM [sugarCRM].[dbo].accounts_cstm AS account 
JOIN [SugarCRMReporting].dbo.uv_account_contact AS ac ON account.accounts_cstm = ac.account_id 
JOIN inserted ON ac.role_id = inserted.id_c 

이제 whitin 역할, 우리가 role_custom 넣 어 변경 및 추가 : 다음과 같은 코드를 넣어

UPDATE 
    account 
SET 
    account.date_of_c = rc.date_autorisation_of_c, 
    account.numero_of_s_c = rc.autorisation_of_c 
FROM [sugarCRM].[dbo].accounts_cstm AS account 
JOIN [SugarCRMReporting].dbo.uv_account_contact AS ac ON account.accounts_cstm = ac.account_id 
JOIN inserted ON inserted.role_id = ac.role_id 
JOIN role_custom AS rc ON ac.role_id = rc.id_c