2010-06-30 5 views
1

내가 PhpPgAdmin (PostgreSQL의 DB)에서보기를 만들려고하고 만들 때 :PhpPgAdmin 구문 오류 다음과 같은 SQL 문이보기

ERROR: syntax error at or near "DELETE" at character 59 In statement: CREATE OR REPLACE VIEW "Schema1"."Delete empty errors" AS DELETE FROM myTable WHERE myTable.error IS NULL;

:

DELETE FROM myTable WHERE myTable.error IS NULL; 

PhpPgAdmin 나에게 다음과 같은 오류를 제공을 지금까지이 SQL 문이 유효하다는 것을 알 수 있고 테이블에 대한 삭제 권한이 있습니다. 뷰에서 DELETE 문을 사용할 수 있습니까? 내가 뭘 잘못하고 있는거야?

답변

4

뷰는 SELECT 문에서만 데이터를 표시하는 데 사용됩니다 (일반적으로 SELECT가 복잡한 경우). 뷰에는 DELETES, UPDATES 또는 INSERT가 포함될 수 없습니다.

아마도 function을 원하십니까?

EDIT : OMG Ponies가 지적했듯이, 기존 뷰에 DELETE를 발행 한 다음 RULE을 사용하여 쿼리를 DELETE로 다시 작성할 수있는 뷰를 업데이트 할 수 있습니다.

그리고 뷰에서 부작용으로 DELETE를 수행하는 함수 호출을 감싸지 마십시오. 예기치 않게 예수님은이 일이 발생할 때마다 강아지를 쏜다.

+0

Postgres는 규칙을 통해 업데이트 가능한 뷰를 지원합니다. http://www.postgresql.org/docs/8.2/static/sql-createview.html –

+0

그리고 뷰 내에서 함수 호출을 래핑 할 수 있습니다. –

+0

좋습니다, 당신은 규칙을 사용하여 업데이트 가능한 뷰를 가질 수 있고 뷰 내에서 함수 호출을 감쌀 수 있지만보기 내에서 일반 DELETE를 보지 못했습니다 – pcent