트리거 개념에 대해 이해하고 있지만 제약 조건을 적용하는 방법에 대해 혼란스러워합니다. 예를 들어 나는 두 개의 테이블을 가지고 있습니다 : student
테이블과 학생 주문서를 보여주는 book_order
테이블.SQL Server 트리거를 사용하여 제약 조건을 적용하는 방법
책 주문서가있는 학생을 학생 테이블에서 삭제할 수 없는지 확인하는 트리거를 만들고 싶습니다.
트리거 개념에 대해 이해하고 있지만 제약 조건을 적용하는 방법에 대해 혼란스러워합니다. 예를 들어 나는 두 개의 테이블을 가지고 있습니다 : student
테이블과 학생 주문서를 보여주는 book_order
테이블.SQL Server 트리거를 사용하여 제약 조건을 적용하는 방법
책 주문서가있는 학생을 학생 테이블에서 삭제할 수 없는지 확인하는 트리거를 만들고 싶습니다.
당신이 일어 났을 때 로그 또는 무언가에 기록하고 싶었지만하지 않는 한 당신이 이제까지 이렇게 왜 확실하지 ..... 대안으로
create TRIGGER Del_Student
ON dbo.Student
INSTEAD OF DELETE
AS
BEGIN
Declare @cnt int
Select @cnt = count(*) from deleted d
Inner Join BookOrders o on d.studentId = o.studentId
if (@cnt > 0)
BEGIN
RAISERROR ('Deletions not allowed from this table when bookorders exist for student)', 16, 1)
END
END
, 당신은에 외래 키 제약 조건을 사용해야합니다 'book_order' 테이블에서'student' 테이블을 참조합니다.이 시나리오에서는 트리거가 필요하지 않다고 생각합니다. –
질문은 foeign 키 대신 트리거를 사용해야하는 이유는 무엇입니까? –
외래 키 제약 조건은 단순히 "대안"이 아닙니다. 이 조건을 표현하는 올바른 방법입니다. 이를 위해 트리거를 사용하면 안됩니다. 당신은 이것을 위해 트리거를 사용하는 것을 배워서는 안됩니다. –