2014-05-10 3 views
0
다음

는 PostgreSQL을위한 몇 가지 SQL입니다 (나는 그것이 바보 같은 쿼리를 알고 내가 내려 간단한 고장 코드를 원래의 질의 삶은 것) : 여기INSERT 및/또는 WITH와 관련된 PostgreSQL 구문 오류입니다. 8.4에서 발생하지만 9.1에서는 발생하지 않습니다. 아이디어?

CREATE TABLE entity (
    id SERIAL PRIMARY KEY 
); 

    WITH new_entity 
    AS (INSERT INTO entity DEFAULT VALUES 
      RETURNING id 
     ) 
SELECT id FROM new_entity; 

는 PostgreSQL의 9.1에서 실행되는 :

psql:../sandbox/test.sql:3: NOTICE: CREATE TABLE will create implicit sequence "entity_id_seq" for serial column "entity.id" 
psql:../sandbox/test.sql:3: NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "entity_pkey" for table "entity" 
CREATE TABLE 
id 
---- 
    1 
(1 row) 

분명히
psql:../sandbox/test.sql:3: NOTICE: CREATE TABLE will create implicit sequence "entity_id_seq" for serial column "entity.id" 
psql:../sandbox/test.sql:3: NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index "entity_pkey" for table "entity" 
CREATE TABLE 
psql:../sandbox/test.sql:9: ERROR: syntax error at or near "INSERT" 
LINE 2: AS (INSERT INTO entity DEFAULT VALUES 

는, 테이블 작성이 두 경우 모두 잘 간다,하지만 P에서 두 번째 쿼리를 지워 버리고 다음은

는 PostgreSQL의 8.4에서 실행되고 있지 않습니다 ostgreSQL 8.4. 이 오류 메시지에서 나는 문제점이 무엇인지 정확하게 수집 할 수 없습니다. 나는 9.1이 가지고있는 것이 무엇인지 알지 못한다. 8.4는이 구문 에러를 일으킬 수있다. 유쾌하게 google it에 단단하다. PostgreSQL 릴리스 노트의 페이지를 통해 8.4와 9.1 사이를 trawl하고, WITH … AS 또는 INSERT … RETURNING과 관련된 것이 있으면 변경하거나 추가했음을 알기 위해 필자는 필사적으로 접근하고 있습니다. 그러나 그곳에 가기 전에 여러분 중 한 명에게 경험이 있기를 바랍니다. 그리고/또는 경건한 google-fu는 나를 여기에서 돕는다.

답변

2

WITH의 데이터 수정 문은 Postgres 9.1에 추가되었습니다.

+0

정말 고마워요! 나는 8.4 호환성을 위해 두 번째 구문을 두 개로 나눌 것이라고 생각한다. – Milosz