복붙노트

[SQL] SQLite는의 자동 증가가 있습니까?

SQL

SQLite는의 자동 증가가 있습니까?

내가 sqlite3를에서 자동 증가 기본 키 테이블을 만들려고하고 있습니다. 나는 확실하지이 정말 가능하지만, 단지 다른 필드를 지정해야에 내가 바라고합니다.

예를 들면 :

CREATE TABLE people (id integer primary key auto increment, first_name varchar(20), last_name varchar(20));

내가 값을 추가 할 때 다음, 나는 단지해야 할 기대했다 :

INSERT INTO people
VALUES ("John", "Smith");

이 경우에도 가능합니까?

나는 윈도우 7에 Cygwin에서 아래 sqlite3를 실행하고 있습니다.

해결법

  1. ==============================

    1.당신은 ROWID라는 무료로 하나 얻을. 이것은 당신이 그것을 여부를 물어 여부를 모든 SQLite는 테이블에 있습니다.

    당신은 ROWID라는 무료로 하나 얻을. 이것은 당신이 그것을 여부를 물어 여부를 모든 SQLite는 테이블에 있습니다.

    당신은 열 포인트가 자동 ROWID 컬럼 (의 별칭) 유형 INTEGER PRIMARY KEY의 열을 포함합니다.

    (당신이 전화를 어떤 이름으로) ROWID는 예상대로 행을 삽입 할 때마다 값이 할당됩니다. 명시 적으로 INSERT에 NULL이 아닌 값을 지정하면, 그 대신 자동 증가의 지정된 값을 얻을 것이다. 명시 적으로 INSERT에 NULL 값을 할당하면, 다음 자동 증가 값을 얻을 것이다.

    또한, 당신은 피하려고한다 :

     INSERT INTO people VALUES ("John", "Smith");
    

    사용

     INSERT INTO people (first_name, last_name) VALUES ("John", "Smith");
    

    대신. 혹시 테이블 정의에서, 이동 또는 삭제 열을 추가하면 INSERT 중 하나를 실패하거나 (잘못된 열에있는 값) 잘못된 데이터를 생성합니다 - 첫 번째 버전은 매우 취약하다.

  2. ==============================

    2.네, 가능합니다. SQLite는 질문에 따르면 :

    네, 가능합니다. SQLite는 질문에 따르면 :

  3. ==============================

    3.여기에 공식 SQLite는 문서 (굵게 및 기울임은 나의 것이) 주제에 말해야하는 것입니다 :

    여기에 공식 SQLite는 문서 (굵게 및 기울임은 나의 것이) 주제에 말해야하는 것입니다 :

  4. ==============================

    4.당신이이 글을 읽을 적이 있습니까? 어떻게 자동 증가 필드를 만들려면 어떻게해야합니까.

    당신이이 글을 읽을 적이 있습니까? 어떻게 자동 증가 필드를 만들려면 어떻게해야합니까.

    INSERT INTO people
    VALUES (NULL, "John", "Smith");
    
  5. ==============================

    5.ROWID 옆에, 당신은 당신의 자신의 자동 증가 필드를 정의 할 수 있지만 권장되지 않습니다. 우리는 자동으로 증가 ROWID를 사용할 때 항상 더 나은 솔루션을 수있다.

    ROWID 옆에, 당신은 당신의 자신의 자동 증가 필드를 정의 할 수 있지만 권장되지 않습니다. 우리는 자동으로 증가 ROWID를 사용할 때 항상 더 나은 솔루션을 수있다.

    자세한 정보는 여기를 참조하십시오.

  6. ==============================

    6.하나는 PRIMARY KEY 근처 AUTOINCREMENT 키워드를 지정하지 않아야합니다. 자동 증가 차 키를 생성 및 삽입의 예 :

    하나는 PRIMARY KEY 근처 AUTOINCREMENT 키워드를 지정하지 않아야합니다. 자동 증가 차 키를 생성 및 삽입의 예 :

    $ sqlite3 ex1
    
    CREATE TABLE IF NOT EXISTS room(room_id INTEGER PRIMARY KEY, name VARCHAR(25) NOT NULL, home_id VARCHAR(25) NOT NULL);
    
    INSERT INTO room(name, home_id) VALUES ('test', 'home id test');
    
    INSERT INTO room(name, home_id) VALUES ('test 2', 'home id test 2');
    
    SELECT * FROM room;
    

    줄게:

    1|test|home id test
    2|test 2|home id test 2
    
  7. ==============================

    7.나는이 대답은 조금 늦게 알고있다. 이 답변에 대한 나의 목적은 모든 사람의 참조가 현재 또는 미래에 SQLite는과 도전의이 유형을 발생해야하고 그것으로 힘든 시간을 보내고있는 것입니다.

    나는이 대답은 조금 늦게 알고있다. 이 답변에 대한 나의 목적은 모든 사람의 참조가 현재 또는 미래에 SQLite는과 도전의이 유형을 발생해야하고 그것으로 힘든 시간을 보내고있는 것입니다.

    이제, 쿼리에서 찾고,이 같은해야한다.

    CREATE TABLE people (id integer primary key autoincrement, first_name varchar(20), last_name varchar(20));
    

    그것은 나의 끝에서 작동합니다. 같은,

    다만 경우에 당신이 SQLite는 작업하는, 당신이 SQLite는 대한 DB 브라우저를 확인하는 것이 좋습니다. 다른 플랫폼에서 작동뿐만 아니라.

  8. ==============================

    8.SQLite는 AUTOINCREMENT는 자동 테이블에있는 필드의 값을 증가하는 데 사용되는 키워드입니다. 우리는 자동으로 증가 자동으로 특정 열 이름을 가진 테이블을 만들 때 AUTOINCREMENT 키워드를 사용하여 필드 값을 증가 할 수 있습니다.

    SQLite는 AUTOINCREMENT는 자동 테이블에있는 필드의 값을 증가하는 데 사용되는 키워드입니다. 우리는 자동으로 증가 자동으로 특정 열 이름을 가진 테이블을 만들 때 AUTOINCREMENT 키워드를 사용하여 필드 값을 증가 할 수 있습니다.

    키워드 AUTOINCREMENT는 INTEGER 필드에서만 사용할 수 있습니다. 통사론:

    다음과 같은 AUTOINCREMENT 키워드의 기본 사용법은 다음과 같습니다

    CREATE TABLE table_name(
       column1 INTEGER AUTOINCREMENT,
       column2 datatype,
       column3 datatype,
       .....
       columnN datatype,
    );
    

    아래의 예를 참조하십시오 : 다음과 같이 회사 테이블이 작성 될 고려 :

    sqlite> CREATE TABLE TB_COMPANY_INFO(
       ID INTEGER PRIMARY KEY   AUTOINCREMENT,
       NAME           TEXT      NOT NULL,
       AGE            INT       NOT NULL,
       ADDRESS        CHAR(50),
       SALARY         REAL
    );
    

    이제 테이블 TB_COMPANY_INFO에 기록을 다음 삽입 :

    INSERT INTO TB_COMPANY_INFO (NAME,AGE,ADDRESS,SALARY)
    VALUES ( 'MANOJ KUMAR', 40, 'Meerut,UP,INDIA', 200000.00 );
    

    이제 레코드를 선택

    SELECT *FROM TB_COMPANY_INFO
    ID      NAME            AGE     ADDRESS             SALARY
    1       Manoj Kumar     40      Meerut,UP,INDIA     200000.00
    
  9. ==============================

    9.당신이 할 것은 정확하지만 '자동 증가'에 대한 올바른 구문은 공백없이해야한다 :

    당신이 할 것은 정확하지만 '자동 증가'에 대한 올바른 구문은 공백없이해야한다 :

    CREATE TABLE people (id integer primary key autoincrement, first_name string, last_name string);
    

    (또한 내가 문자열로 된 varchar 변경 있습니다. 그의를 SQLite는 내부 문자열로 VARCHAR를 변환하기 때문에, 왜 귀찮게?)

    다음 삽입 가능한 표준 SQL 언어로,해야한다 :

    INSERT INTO people(id, first_name, last_name) VALUES (null, 'john', 'doe');
    

    당신이 ID를 생략하면 자동으로 증가하고 할당 할 것은 사실이지만, 나는 개인적으로 향후 변경 될 수 있습니다 자동 메커니즘에 의존하지 선호합니다.

    자동 증가에 대한주의 사항 : 많은 지적 밖으로, 그것은이 SQLite는 사람들이 사용하지 않는 것이 좋습니다,하지만 자동 증가를 사용하지 않을 경우, 나는 삭제 된 레코드의 ID를 자동으로 재사용 좋아하지 않는다. 즉, 나는 삭제 된 레코드의 ID는, 다시는 나타나지 않을 것처럼.

    HTH

  10. from https://stackoverflow.com/questions/7905859/is-there-an-auto-increment-in-sqlite by cc-by-sa and MIT license