2011-12-05 3 views
2

Postgres에서 이와 같은 것을 만들 수 있습니까?plpgsql에서 변수를 필드 이름으로 사용하는 방법

DECLARE variable VARCHAR 
BEGIN 
    variable := TG_RELNAME || '_id'; 
    OLD.variable = 123; 
END; 

나는 ...

추신을 FIELD_NAME 같은 변수의 값을 사용할 수 없습니다 내 버전의 db는 8.4입니다.

+0

전혀 들어, 추가 쿼리를 만드는 것입니다. 'DELETE FROM alerts where item_table = TG_RELNAME AND item_id = OLD. {field_name_from_variable_value}' – sigra

답변

1

는 지금까지 내가 아는 한,이 작업을 수행 할 수있는 유일한 방법이 트리거는 삭제 행에 대해, 예를

execute 'update ' || TG_RELNAME || ' set ' || variable ||' = 123'; 
+0

이것은 아마도 나쁜 생각입니다 (부풀거나 경쟁 조건이 될 것입니다). 비 plpgsql 트리거 함수를 사용하는 것과 같은 몇 가지 해결 방법이 있지만 아마 할 일은 함수를 하드 코딩하는 것입니다. – xzilla

+2

"quote_ident()"함수를 사용하여'TG_RELNAME'과'variable'을 인용해야합니다. "quote_ident()'함수가"비정상적인 "문자를 포함하고 있다면 구문 오류를 피할 수 있습니다 :'execute 'update'|| quote_ident (TG_RELNAME) || '설정'|| quote_ident (변수) || ' = 123 '; – IMSoP

관련 문제