2014-02-05 2 views
0

UML 다이어그램에서 간단한 학생 데이터베이스를 만드는 것이 SQLite 튜토리얼의 목표였습니다.SQLite에서 내 데이터 유형 변경

최근에는 데이터 유형을 변경하는 방법을 알아 내려고 노력하고 있으며 도움이 될 것으로 기대하고 있습니다. 강사에게 게시 한 것과 동일한 질문을 게시 할 것입니다.

불행히도 강사를 따라갈 때 내 데이터 유형이 엉망입니다. http://www.youtube.com/watch?v=07nBszNiwU8

지금까지 TRANSCRIPT ++ 모든 도움을


감사를 BEGIN ++,하지만 나는 다른 비밀이 보인다 : 그 도움이된다면 비디오, 여기에서 찾을 수 있습니다. 내가 한 첫 번째 작업은 UML을 복사 한 다음 휴식을 취하는 것입니다. 반환에, 나는 당신의 비디오를 다시로드하는 동안은 UML에서 시작 거라고 생각, 그래서 내가했던 최초의 일이 그래서 학생 및 sex_type 테이블을 생성했다 :

sqlite> create table student(name VARCHAR(23), 
    ...> sex CHARACTER(1), 
    ...> id_number INTEGER PRIMARY KEY); 

sqlite> create table sex_type(sex_id TEXT PRIMARY KEY, sex_type INTEGER); 

을하지만 그때 나는 아차, "실현 sex_id가 NULL이 아니길 바랬다는 것을 잊어 버렸습니다. "

"외래 키 (sex)가 sex_type (sex_id)을 참조하도록하기 위해 잊어 버렸습니다."

그런 생각으로 SQL 책을 검토하고 ALTER 명령을 호출했습니다. 그러나 슬라이스에 관계없이 다음 줄을 따라 뭔가를 얻을 수 있습니다.

sqlite> alter table sex_type MODIFY column sex_id TEXT PRIMARY KEY NOT NULL; 

Error: near "MODIFY": syntax error 

sqlite> alter table sex_type CHANGE column sex_id TEXT PRIMARY KEY NOT NULL;** 

Error: near "CHANGE": syntax error 

sqlite> alter table sex_type drop sex_id; 

Error: near "DROP": syntax error 

항상 같은 구문 오류가 있습니다. 오늘 밤 일했다 유일한 소개 :

sqlite> alter table sex_type RENAME TO gender; 

sqlite> alter table gender_id RENAME TO sex_type; 

그래서 내 책을 내 구문을가는 것은 괜찮을 것 때문에 내가 내려다있어이 구문 오류가 무엇인지. 수정을 수행하기 전에이 열에 뭔가를 삽입해야합니까? (아직 시도하지 않았습니다.) 또는 ALTER/MODIFY/CHANGE/DROP 명령에 대한 명백한 내용이 누락 되었습니까?

+0

가능한 중복 [기본값이 아닌 SQLite에 DateTime 열을 추가 하시겠습니까?] (http://stackoverflow.com/questions/3027438/add-not-null-datetime-column-to-sqlite-without-default- 값) – dan04

답변

2

ALTER TABLE에 대한 SQLite의 지원은 매우 제한적이며 including only RENAME TO and ADD_COLUMN입니다. 지원되지 않는 명령을 실행 중이기 때문에 구문 오류가 발생합니다.

잃을 데이터가없는 경우 테이블을 삭제하고 다시 만드는 것이 좋습니다.

데이터를 잃어 버리면 this example과 같이 INSERT with SELECT을 사용하여 테이블의 이름을 바꾸고 대체 코드를 만드는 것이 좋습니다.