나는 하나 개의 테이블에 두 개의 트리거, 삽입에 하나 화재를 가지고삽입 트리거에서 업데이트 할 때 업데이트 트리거 이후 발사하지
CREATE TRIGGER [dbo].[eTteamTg]
ON [dbo].[entryTable]
AFTER INSERT
AS
BEGIN
UPDATE entryTable
SET shiftTeam = (SELECT TOP 1 shiftTeamMemb.teamId
FROM shiftTeamMemb
WHERE shiftTeamMemb.personalNumber = i.personalNumber)
FROM entryTable
INNER JOIN inserted i ON i.ID = entryTable.ID
END
그리고 두 번째 화재 갱신
후 다른 테이블에서 추가 정보와 함께 행을 갱신 내가해야 할 일은CREATE TRIGGER [dbo].[eThistoryUpdTg] ON [dbo].[entryTable]
AFTER update
AS
BEGIN
INSERT INTO eThistory(my columns)
SELECT
*, HOST_Name() + ' ' + SUSER_NAME() + ' Upd', GETDATE()
FROM
deleted
END
내가 AFTER INSERT
트리거 행을 업데이트하고 때AFTER UPDATE
트리거를 발생하지 이다. 가능한가?
귀하의'삽입 '방아쇠가 부러진 것처럼 보입니다. 하위 쿼리는 상관 관계가 없습니다 ('i'를 참조하려고했던 것보다'inserted'에 대한 별도의 참조가 도입되었습니다). 그래서 다중 행 삽입은 "subquery returned of more 하나의 가치보다 ". –
아, 지금은 질문을 업데이트 @Damien_The_Unbeliever –
죄송합니다, 틀렸어. 그 오류를 반환하지 않습니다. 대신 '최고 1'을 사용하도록 강요했기 때문에 자동으로 데이터가 손상됩니다. 다시 말하면, 그 부질의는 무관계 *입니다. 그래서'inserted'가 * different *'personalNumber' 값을 갖는 * multiple * 행을 포함한다면, 그 값 중 * 하나는'shiftTeamMemb'에서 성공적으로 룩업을 일으키고 원래 삽입 된 모든 * 행은 그 값을받습니다. –