나는 매우 이상한 행동으로 보았다. insert-select 문을 만들고 select 부분에서 데이터가 반환되지 않으면 삽입 부분이 여전히 실행되고 심지어 삽입 트리거가 호출됩니다 (삽입 트리거에서 삽입 된 pseudotable에 0 행이 있음).삽입 할 데이터가 없을 때 삽입 트리거가 호출되는 이유는 무엇입니까?
예 :
insert into table1 column1
select column1 from table2 where condition = 'Never met'
출력 :
(0 row(s) affected) // 0 rows inserted
(1 row(s) affected) // log from trigger
이가 (한 번에 삭제 INSERT, UPDATE 선언) '보편적 인'트리거에 의해 야기 될 수 있습니까? 이것이 더 가설적인 질문 인 것과 나는이 행동을 받아 들여야 만한다는 것을 압니다. 그러나 이것이 왜 일어나는 것입니까? 나에게 의미가 없다. 나는 SQL 서버 2005
을 사용하고 - kwitee
나는이 질문을 볼 수있는 많은 (더) 눈 앞에 내 대답 중 하나 뻔뻔스러운 실수를 해결하기 위해 시간에 답을 발견했습니다. :) 감사! –
내 질문은 왜 이런 식으로 결정했는지에 관한 질문이었습니다. 나는 개발 시간을 절약하는 것보다 아마 다른 이유를 찾고 있었다. 그러나 나는 어떤 것도 찾을 수 없다. 그것은 매우 직관력이없고 트리거를 좀 더 복잡하게 만든다. 그러나 어쨌든 고마워. – kwitee