2009-03-08 3 views

답변

3

SQLite는 Manifest (Dynamic) 타이핑을 사용합니다. C 럼 유형은 안내 전용이며 C 럼 데이터 유형을 변경하지 않아도됩니다. Column Affinity은 정적으로 형식이 지정된 데이터베이스와의 호환성을 제공하기 위해 사용됩니다. SQLite documentation 가입일

:

SQLite는 동적 입력을 사용한다. 데이터 형식 제약 조건을 적용하지 않습니다. 모든 데이터를 임의의 열에 삽입 할 수 있습니다. 임의의 길이 문자열 을 정수 열에, 부동 소수점 을 부울 열로 또는 문자 열로 배치 할 수 있습니다. 데이터 유형 당신은

SQLite는 당신이 을 선호하는 힌트로 컬럼의 선언 형식을 사용합니까 ... 명령은 해당 컬럼에 투입 할 수있는 데이터 제한하지 않는 CREATE TABLE의 열 할당 그 형식의 값. 따라서 예제의 경우 열의 유형이 INTEGER이고 해당 열에 문자열을 삽입하려고하면 SQLite는 문자열을 정수로 변환하려고 시도합니다. 가능한 경우 정수 을 대신 삽입합니다. 그렇지 않으면 문자열을 삽입합니다.

그들은 버그가 아니라 기능이라고 말합니다. 귀하의 응용 프로그램에 문제가 있다면 SQlite가 최선의 선택이 아닐 수도 있습니다.

2

애쉬는 맞지만, 열의 유형 선호도가 문제를 일으키는 경우 (예 : 숫자와 같이 보이는 문자열이 변환되어 부정확하게 저장되는 경우), 복사 할 수있는 유일한 옵션은 모든 데이터를 임시 테이블에 저장하고, 원본을 삭제하고, 올바른 정의로 ​​다시 만들고, 데이터를 다시 복사하십시오. 내가 아는 한 이건 이 아니고,이 아닙니다. ; ^)

관련 문제