반응형
sqlite (3.6.21) 테이블에서 제약 조건을 어떻게 삭제합니까?
다음 표가 있습니다.
CREATE TABLE child(
id INTEGER PRIMARY KEY,
parent_id INTEGER CONSTRAINT parent_id REFERENCES parent(id),
description TEXT);
제약 조건을 어떻게 삭제합니까?
SQLite는 (이 답변 현재) alter table drop constraint
명령을 지원하지 않습니다 . 허용되는 구문은 여기에서 볼 수 있습니다 . 제약 조건없이 새 테이블을 생성하고 데이터를 전송 한 다음 이전 테이블을 삭제해야합니다.
다음과 같은 것이 작동해야한다고 생각합니다.
CREATE TABLE child2 (
id INTEGER PRIMARY KEY,
parent_id INTEGER,
description TEXT
);
INSERT INTO child2 (id, parent_id, description)
SELECT id, parent_id, description FROM CHILD;
DROP TABLE child;
ALTER TABLE child2 RENAME TO child;
(가) 있습니다 insert into
아마로 단순화 할 수 없습니다 명시 적으로 열 이름을 사용하지만 내가 당신이 아니라 구조를 변경하고자하는 경우에는 그 방법을 떠 났어요.
예를 들어 열에 대한 제약 조건을 제거 하는 경우 해당 parent_id
열을 그대로 유지하는 것은 모호한 용도입니다. 이 경우 데이터 전송을 다음으로 수정할 수 있습니다.
CREATE TABLE child2 (id INTEGER PRIMARY KEY, description TEXT);
INSERT INTO child2 (id, description) SELECT id, description FROM CHILD;
이것이 더 쉽고 간결한 접근 방식이라고 생각합니다.
copy db.sqlite3 backup-db.sqlite3
echo .dump tablename | sqlite3 db.sqlite3 > modify.sql
(now delete or change the constraint in modify.sql)
echo drop table tablename; | sqlite3 db.sqlite3
sqlite3 db.sqlite3 < modify.sql
이제 새 데이터베이스 테이블을 다시 덤프하고 차이점을 비교할 수 있습니다.
참조 URL : https://stackoverflow.com/questions/1884787/how-do-i-drop-a-constraint-from-a-sqlite-3-6-21-table
반응형
'IT이야기' 카테고리의 다른 글
IDL이란 (0) | 2021.04.16 |
---|---|
jQuery : src로 이미지를 찾는 방법 (0) | 2021.04.16 |
함수 호출로 인해 경고가 발생하는지 확인 (0) | 2021.04.16 |
USB 드라이브가 연결되어 있는지 확인하는 방법 (0) | 2021.04.15 |
libgmp-10.dll이 누락되었습니다. (0) | 2021.04.15 |