원래 합성/외래 키로 설계된 SQLite 데이터베이스 스키마에서 작업 중이며 대신 대리 키를 사용하도록 변경하려고합니다. 서로 게이트 키에 대한 새 열을 쉽게 만들 수 있었지만 이제는 대용 키를 부모 테이블에 다시 연결해야합니다.이를 수행하는 가장 좋은 방법은 무엇입니까?복합 외래 키를 사용하여 데이터베이스에 대리 키를 만드는 방법은 무엇입니까?
올드 스키마 발췌 :
이CREATE TABLE "parent" (
"caseid" TEXT NOT NULL,
"issueid" INTEGER NOT NULL,
"data" TEXT,
PRIMARY KEY("caseid", "issueid")
)
CREATE TABLE "child" (
"caseid" TEXT NOT NULL,
"issueid" INTEGER NOT NULL,
"childdata" TEXT,
FOREIGN KEY("caseid", "issueid") REFERENCES parent("caseid", "issueid")
)
새로운 스키마 발췌 :
CREATE TABLE "parent" (
"id" INTEGER PRIMARY KEY,
"caseid" TEXT NOT NULL,
"issueid" INTEGER NOT NULL,
"data" TEXT
)
CREATE TABLE "child" (
"id" INTEGER PRIMARY KEY,
"childdata" TEXT,
"parent_id" INTEGER REFERENCES parent("id")
)
내 질문은, 원래 자식 테이블의 데이터로 새로운 자식 테이블을 작성 후 내가 어떻게 채울 않는 한 "parent_id"필드는 현재 복합 외래 키가 아닌 대리 키입니다. SQL 명령으로이를 수행하는 쉬운 방법이 있습니까?
고마워요! 비슷한 솔루션으로 수렴했지만 select 문으로 행을 업데이트하는 방법을 잠시 잊어 버렸습니다. (또한 너무 나쁜 SQLite 열을 직접 삭제할 수 없습니다 - 여분의 열을 삭제하려면 새 데이터를 통해 테이블을 복사 할 추가 단계를 수행해야하지만 그렇지 않으면 완벽하게 작동합니다) –
CREATE TEMPORARY VIEW '필요한 경우 전체 표 사본을 하나만 사용할 수 있습니다. :) – biziclop