2012-10-21 5 views
0

테이블의 일부 열을 처리하는 트리거를 만들고 싶습니다.열이있는 경우 SQLite 솔루션입니까?

트리거는 이러한 열이없는 경우 발생할 수있는 오류를 처리해야합니다.

가능합니까? "if exists"명령이 SQLite에 없기 때문에 그러한 솔루션이없는 웹을 검색했습니다.

편집 : (주석에서 요청) 트리거에 대한 예 :

CREATE TRIGGER trigger_name 
    AFTER UPDATE ON table_1 
    BEGIN 
     IF exist (select col_1 from table_1) 
      BEGIN 
      update table_1 set col_1='1' where id = '2' 
      END 
    END 

컬럼 col_1이 오류를 만들 것입니다 존재하지 않습니다.

+0

이 트리거를 트리거하는 쿼리의 예를 제공해 주시겠습니까? –

+1

예를 들어 보았습니다. –

답변

2

SQLite에서 triggers can execute only normal SELECT/INSERT/UPDATE/DELETE commands; IF과 같은 프로그래밍 구조는 없습니다.

동적 코드를 실행하려는 경우, 당신은 당신의 자신의 사용자 정의 함수를 등록해야합니다 (이 작업을 수행하는 방법은 사용중인 언어/드라이버에 따라 다름), 트리거에서 호출 :

CREATE TRIGGER name 
AFTER UPDATE ON table_1 
BEGIN 
    SELECT my_custom_function(); 
END 

함수에서 PRAGMA table_info 쿼리를 사용하여 테이블 구조를 확인하고 UPDATE 쿼리를 실행할 수 있습니다.

+0

이해가 안됩니다. DB에서 함수를 작성할 수 있습니까? –

+1

자신을 반복하려면 : 이것은 사용중인 언어/드라이버에 따라 다릅니다. –

관련 문제