2011-05-10 2 views
0

"주어진 테이블의 열 이름"을 sqlite의 외래 키로 참조 할 수 있습니까?sqlite의 외래 키로 열 이름 사용

내가 테스트 한 :

create table "test"(
    test TEXT 
); 
create table "othertest"(
    othertest TEXT references PRAGMA table_info("test")[1] 
); 

그러나

예상대로 작동하지 않습니다 (오류가 Error: near "table_info": syntax error이지만, table_info이 수락 된 경우에도, 나는 [1] 부분이 유효 할 것이라고 의심)

+0

무엇이 좋을까요? 어쨌든 expression에 의해 지정된 열을 사용할 쿼리를 가질 수 없습니다. –

+0

대답은 "무엇을위한 것인가?"에 대한 답변을 아래 – CircleCode

답변

0

일반적으로 SQL 데이터베이스 관리 시스템은 DDL에서 표현식을 허용하지 않습니다. information_schema 뷰를 지원하는 시스템에서는 스칼라 하위 쿼리를 사용하여 외래 키 참조에 대한 대상을 반환 할 수 없습니다. 이것은 매일 사용하는 모든 SQL dbms의 구문 오류입니다.

create table test (
    article_id integer primary key 
     references articles (select column_name 
          from information_schema.columns 
          where table_name = 'articles' 
          and is_nullable = 'NO') 
); 

이 작업을 수행하여 해결해야 할 실제 문제는 무엇입니까?

+0

에 실어주십시오. 실제로, 뷰를 생성하는 매핑을 설명 할 수있는 테이블이 필요한 데이터 모델이 있습니다. 이것이 명확한 지 모르겠습니다 ... 열의 별칭을 저장하는 테이블로 볼 수 있으며이 매핑을 사용하여 나중에 뷰를 생성하는 데 사용됩니다 – CircleCode

+0

@CircleCode : SQL을 사용하여 읽을 수 있습니다 테이블을 만들고 응용 프로그램 코드를 사용하여 뷰에 대한 리터럴 DDL을 생성합니다. DDL에서는 상수가 아닌 표현식을 사용할 수 없습니다. –

관련 문제