종종.. 다른 테이블에서 유사한 필드만 뽑아서 하나의 뷰로 만들어야 하는 경우가 종종 있다.
다음과 같이 뷰를 만들어서 select해보면 잘 된다.
문제는 다른 테이블에서 유사한 정보만 묶어서 하나의 테이블처럼 쓰려는것이다보니,
기본키가 기존에 존재했다고 해도 union 되면서 유일성이 사라질수 있어서
ROWID를 키처럼 쓰려고 한것이다.
근데...
select * from VIEW_TEST; (잘됨)
select * from VIEW_TEST where LOGID = 'AAAEZIAATAAAAHVAAC'; 이렇게 where절에 rowid를 검색해보려고하면...안됨.
ORA-01410: invalid ROWID
참 이런에러 지랄리스틱하다...
에러메시지 찾아도.. 한글로 번역해놓은 에러만 설명되어있을뿐 ㄱ-
일단, 나같은 case의 경우는 뷰에서 ROWID를 cast해서 필드형을 바꿔서 뷰를 만들면 해결된당...
인터넷 어딜 뒤져도 이런 해결법은 없더군 흠흠..
CREATE OR REPLACE FORCE VIEW "jmc"."VIEW_TEST" AS
SELECT
cast(ROWID as CHAR(18)) AS LOGID,
bm_content as HTML_BODY
FROM BBS_MEDIA
UNION ALL
SELECT
cast(ROWID as CHAR(18)) AS LOGID,
sf_content as HTML_BODY
FROM FREE_MEDIA
다음과 같이 뷰를 만들어서 select해보면 잘 된다.
문제는 다른 테이블에서 유사한 정보만 묶어서 하나의 테이블처럼 쓰려는것이다보니,
기본키가 기존에 존재했다고 해도 union 되면서 유일성이 사라질수 있어서
ROWID를 키처럼 쓰려고 한것이다.
CREATE OR REPLACE FORCE VIEW "jmc"."VIEW_TEST" AS
SELECT
ROWID AS LOGID,
bm_content as HTML_BODY
FROM BBS_MEDIA
UNION ALL
SELECT
ROWID as AS LOGID,
sf_content as HTML_BODY
FROM FREE_MEDIA
SELECT
ROWID AS LOGID,
bm_content as HTML_BODY
FROM BBS_MEDIA
UNION ALL
SELECT
ROWID as AS LOGID,
sf_content as HTML_BODY
FROM FREE_MEDIA
근데...
select * from VIEW_TEST; (잘됨)
select * from VIEW_TEST where LOGID = 'AAAEZIAATAAAAHVAAC'; 이렇게 where절에 rowid를 검색해보려고하면...안됨.
ORA-01410: invalid ROWID
참 이런에러 지랄리스틱하다...
에러메시지 찾아도.. 한글로 번역해놓은 에러만 설명되어있을뿐 ㄱ-
일단, 나같은 case의 경우는 뷰에서 ROWID를 cast해서 필드형을 바꿔서 뷰를 만들면 해결된당...
인터넷 어딜 뒤져도 이런 해결법은 없더군 흠흠..
CREATE OR REPLACE FORCE VIEW "jmc"."VIEW_TEST" AS
SELECT
cast(ROWID as CHAR(18)) AS LOGID,
bm_content as HTML_BODY
FROM BBS_MEDIA
UNION ALL
SELECT
cast(ROWID as CHAR(18)) AS LOGID,
sf_content as HTML_BODY
FROM FREE_MEDIA