database2.table2의 행이 삭제 될 때 database1.table1에서 조건부로 행을 삭제하는 기본 데이터베이스 트리거를 만들려고합니다. 나는 트리거가 생소하고 이것을 달성하기위한 최선의 방법을 배우기를 희망했다. 이것은 내가 지금까지 가지고있는 것이다. 제안?SQL Server ON DELETE 트리거
CREATE TRIGGER sampleTrigger
ON database1.dbo.table1
FOR DELETE
AS
IF EXISTS (SELECT foo
FROM database2.dbo.table2
WHERE id = deleted.id
AND bar = 4)
-- If there is a row that exists in database2.dbo.table2
-- matching the id of the deleted row and bar=4, delete
-- it as well.
-- DELETE STATEMENT?
GO
당신이 필요로하는 방아쇠가 발동되었다는 사실을 고려 ** ** 문당 한 번 ** (그리고 ** NOT ** once pe (행이 많은 행을 삭제 한 경우) –
@marc_s - 시스템에서 한 번에 하나의 행만 삭제 될 수 있음을 알 수 있습니다. 응용 프로그램 프런트 엔드). 무슨 뜻인지 자세히 설명해 주시겠습니까? 'WHERE id = deleted.id'를'WHERE id IN (SELECT id FROM deleted)'로 변경하는 것만 큼 간단합니까? –
@ShawnH. 네, 그렇게 간단해야합니다. 나는 어떻게 든 방아쇠가 행마다가 아니라 전체 문에 대해 한 번만 실행되므로 어쨌든 대량 삭제가 호출되면 Marc이 의미한다고 생각합니다. 따라서 IN을 사용하면 어느 방향 으로든 정렬해야합니다. – Bridge