2013-05-21 2 views
0

나는 table1에 BEFORE INSERT를 실행하고있는 트리거 기능을 가지고 있습니다. 이 함수에서는 다음을 수행합니다.트리거 함수 내에서 Postgres에 삽입

INSERT INTO table2 VALUES(x, y, z); 
INSERT INTO table3 VALUES(x, a); 

어떤 이유로이 INSERT 문은 실행되지 않습니다. 나는 그 기능이 호출되고 있음을 안다.

UPDATE :

더 자세한 정보는, 내 트리거는 다음과 같습니다

CREATE TRIGGER update_db 
BEFORE INSERT ON table1 
FOR EACH ROW 
EXECUTE PROCEDURE update_all_db(); 

내 프로 시저 기능은 많이하지 않습니다. 위와 같이 몇 가지 진술 만하면됩니다.

미리 감사드립니다.

+0

더 많은 정보를 제공해야합니다. 트리거 기능, 트리거, 테이블 정의, 오류 메시지, Postgres 버전 및 가장 중요한 * 관련된 다른 트리거에 대한 정보로 시작하십시오. –

+0

내가 추가 한 부족한 정보보다 더 많은 것을 요청했습니다. –

+0

오류 메시지가 없습니다. Postgres 9.2입니다. 다른 트리거는 없습니다. 이것들은 아주 간단하게 3 개의 임의의 테이블입니다. – HappyCry

답변

1

세미콜론 (;)이 진술 뒤에 있습니다.

지속되는 INSERT 문에 테이블에 대한 열 목록을 포함하지 않는 것이 자살 행위입니다. 테이블 정의를 table2 또는 table3으로 나중에 변경하면 트리거는 최악의 경우 데이터를 자동으로 중단 또는 파괴합니다. 그래야만합니다 :

INSERT INTO table2(col1, col2, col3) VALUES(x, y, z); 
INSERT INTO table3(col1, col2) VALUES(x, a); 

하지만 그 이유는 "실행되지 않아야합니다"입니다.
문제는 이 아니기 때문에 질문에이 아닙니다.

+0

죄송합니다. 질문에 세미콜론이 없습니다. 더 자세한 내용으로 질문을 업데이트하겠습니다. – HappyCry