2012-04-20 2 views
1

그래서 외부 키 코드가 유효하지 않은 경우 데이터를 삽입 할 때 오류가 발생하는 트리거를 만들려고합니다. 두 개의 표, 게시자 및 제목이 있습니다. 게시자와 마찬가지로 제목에는 게시자 코드가 있습니다. 삽입물에 대한 내 제목 트리거가 있고 현재 존재하지 않는 경우 코드를 삽입 된 행의 게시자 코드를 동일하게 게시자 행을 선택하고 있습니다. SQL이 "다중 부분 식별자 Inserted.PublisherCode를 찾을 수 없습니다"라는 오류를 주므로 올바른 방법이 아닌지 알 수 없습니다. 네가 줄 수있는 어떤 도움이라도 인정 될 것이다. 감사.삽입 된 테이블 T-SQL에서 열 참조

go 
create trigger TR_Title_PublisherCode_Insert 
on title 
for Insert 
as 
    if not exists(select * from Publisher where PublisherCode = Inserted.PublisherCode) 
    begin 
     raiserror('Publisher does not exist', 16, 1) 
     rollback tran 
    end 
+5

스키마에서 PublisherCode를 FK로 올바르게 지정하면 서버가 자동으로이 문제를 처리합니다. – hkf

+0

예, 그 사실을 알고 있습니다. 그러나 이것은 학교 과제이며 우리는 불행히도 이런 일을하는 방아쇠를 만들어야합니다 (아무도 연습 문제를 이해해야한다고 말한 사람은 아무도 없습니다). – Jack

답변

4

INSERTED 및 DELETED가 테이블이 너무

그래서 당신이해야 할 : HKF 말했듯이 당신이 외부 키로 PublisherCode를 발견하는 경우, 당신은 원, 그런데

if not exists(
    select * from Publisher 
    where PublisherCode in (SELECT PublisherCode FROM inserted) 
) 

를 ' 방아쇠를 만들 필요가 있습니다

+0

감사합니다, 그게 내가 필요한 것입니다! – Jack