2012-02-14 2 views
0

나는 하나의 관계가 많은 데이터베이스와 작업하고 싶습니다. ON UPDATE CASCADE에있는 외래 키를 만들었습니다. 내 이해는 ON UPDATE CASCADE이고, Primary가 증가하면 다른 테이블의 Foreign 키가 증가하고 다른 테이블의 Primary 값이 증가합니다. 하지만 문제는 내가 부모 테이블에 데이터를 삽입 할 때 다른 테이블의 외래 키가 상위 테이블의 기본 값을 가져 오지 않았기 때문입니다. 내 외래 키는 관련 키 값을 어떻게 가질 수 있습니까? 여기 너희들이이업데이트 캐스케이드에서 SQL Server Management Studio

예상 결과는 사람들이 테이블에 P_ID에합니다 연결된 경우에도 값이없는 주문 테이블에 P_ID을 볼 수 있듯이 enter image description here

이해 easiy 할 수있는 스크린 샷입니다 Orders 테이블에서 P_ID 값은 필자의 데이터를 삽입 한 people 테이블의 P_ID와 같습니다.

답변

3

하지만 문제는 부모 테이블에 데이터를 삽입하는 것입니다.

삽입시 아무런 조치도 취하지 않으며, 유일한 on update입니다. 당신은 숫자 2로 변경하는 경우 숫자 1과 사람에 대한 순서는, 하나의 번호 사람이있는 경우

은, 순서 2.

당신은 트리거를 할 수 있습니다으로 변경됩니다. 예상되는 결과에게 무엇을 더 말해

편집 :

트리거 예 :

내가 생각
create trigger InsertRecordOnOrder 
on People 
after insert 
as 
begin 
    insert into Orders 
    select * from INSERTED 
end 
+0

내 예상 결과는 당신이 그 화재 트리거를 할 수처럼 단지 디에고는 말을 울리는 그 값 – KyelJmD

+0

@KyelJmD, 그것은 소리로 주문 테이블의 P_Id은 1이됩니다 위의 스크린 샷에서 그 일 것입니다 삽입에. – Dan

+0

은 외래 키의 목적이 아니며 특히 ON UPDATE 제약 조건과 관련이 있습니다. 당신은 당신이 그것을 필요하다고 생각하지 않기 때문에 ON UPDATE를하지 않고 외래 키를 떠나야하고 인원 테이블에 INSERT 대신 INSERT 트리거를 만들면 사람을 삽입 할 때마다 자동으로 순서가 삽입됩니다. – Diego

관련 문제