2
에 새 레코드가 삽입되거나 BOM.Site
열이 업데이트되면 dbo.SiteMap
값을 조회하고 SiteMap.SiteName
값을 입력하고 BOM.SiteMap
열에 삽입하십시오. 그래서 나는 방아쇠가 갈 방법이 될 것이라고 생각했지만 작동하지 않습니다. (방아쇠가 이것에 최고 apporach가 아닌 경우에 저에게하십시오!) 어떤 제안? 미리 감사드립니다.삽입 또는 업데이트시 다른 테이블의 값을 가진 동일한 행에 값을 삽입하는 SQL 트리거
테이블 :
=BOM=
id | Site | SiteMap
---+----------+------
1 | Mex |
2 | MXN |
3 | USA |
4 | Mex |
=SiteMap=
id | SiteName | Sitecode
---+----------+------
1 | Mexico | Mex
2 | Mexico | MXN
3 | USA | USA
4 | USA | United States of America
원하는 출력 :
=BOM=
id | Site | SiteMap
---+----------+------
1 | Mex | Mexico
2 | MXN | Mexico
3 | USA | United States of America
4 | Mex | Mexico
내가 다른 몇 가지를 시도했습니다 ..
CREATE TRIGGER dbo.trMapBom on dbo.BOM
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF UPDATE([Site ])
BEGIN
UPDATE dbo.BOM
SET BOM.[Site Map] =
(
SELECT [SiteName]
from dbo.SiteMap
where [PlantCode] = [Site ]
)
END
END
GO
또 다른 시도 ..
CREATE TRIGGER dbo.trMapBom on dbo.BOM
AFTER INSERT,UPDATE
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.BOM set [Site ] = SiteMap.SiteName
from dbo.BOM
inner join dbo.SiteMap
on BOM.[Site ] = SiteMap.PlantCode
END
GO
,
'PlantCode' 열을하여 제공하는 테이블 구조에. 오타 또는 무엇입니까? 그렇다면'SiteMap' 테이블에서'Sitecode' 컬럼이 있어야합니다. BTW에서는이 요구 사항에 대한 방아쇠를 만들 필요가 없습니다. 저장 프로 시저 (app에있는 경우)에서이를 수행 할 수 있습니다. 한가지 더 질문 - BOM 테이블에 새로운 레코드를 삽입하면 관련된 'SiteCode'는 항상'SiteMap' 테이블에 있습니다. 먼저 확인하십시오. 그리고 관련 레코드가'SiteMap' 테이블에 없다면 어떻게 될까요? –