8.1이 release 되었다길래.. 한번 깔아봤습니다.
그런데.. 잘 작동하던 plpgsql function 에서 아래와 같은 에러가
나더군여..
ERROR:
missing FROM-clause entry for table "table name"
그래서 좀 찾아 봤더니..
8.1 release notes 에 이것에 관한 내용이 있더군여....
add_missing_from 값을 default false 로 해 놨다고...
8.0.4 run-time configuration 에 보면 SQL-standard 도 아니고..
실수도 유발할수 있어 이렇게 했다는군요..
근데.. 문제는 제가 쓰던 SQL 이 에러가 나는데.. 전 이게
SQL-standard 인줄 알고 사용하던 건데..
아니였나 봅니다.. ㅡㅡ;; 그럼 어케 써야 하는거지.
아래는 test 했던 내용입니다.
CREATE TABLE test1 ( number int2 , member_id varchar(20) ) ;
CREATE TABLE test2 ( number int2 , member_id varchar(20) ) ;
INSERT INTO test1 VALUES('1','아이디1') ;
INSERT INTO test1 VALUES('2','아이디2') ;
INSERT INTO test2 VALUES('1','아이디3') ;
INSERT INTO test2 VALUES('2','아이디4') ;
SELECT * FROM test1 ;
number | member_id
--------+-----------
1 | 아이디1
2 | 아이디2
(2 rows)
SELECT * FROM TEST2 ;
number | member_id
--------+-----------
1 | 아이디3
2 | 아이디4
(2 rows)
위와 같이 만들고...
SELECT test1.*, test2.* FROM test1
WHERE test1.number = test2.number AND
test1.number = 1 ;
ERROR: missing FROM-clause entry for table "test2"
위 구문이 에러 나는 것은 이해 하겠습니다. from 절에
table 명이 바졌으니..
수정하면 아래와 같이 되겠지요..
SELECT test1.*, test2.* FROM test1, test2
WHERE test1.number = test2.number AND
test1.number = 1 ;
number | member_id | number | member_id
--------+-----------+--------+-----------
1 | 아이디1 | 1 | 아이디3
머 위의 예제는 충분히 알겠는데.... 저도 위에 처럼.. table 명을
빼고 쓰지는
않으니.. (실수로 빼먹는 경우는 꽤 있을지도 모르겠네여. ;;)
아래 구문도 에러가 난다는 것이 문제인데.. 전 이게 정상적인
구문인줄 알고 있었는데..
아니였나 봅니다. ㅡㅡ;; 그럼 어떻게 써야 하는지..??
UPDATE test1 SET member_id = test2.member_id
WHERE test2.number = test1.number AND
test1.number = 1 ;
ERROR: missing FROM-clause entry for table "test2"
|