[SQL] SQLite는 자동 증가 기본 키가 아닌 필드
SQLSQLite는 자동 증가 기본 키가 아닌 필드
그것은 모든 삽입과 자동 증가 될 수있는 비 기본 키를 가질 수 있습니까?
예를 들어, 나는 모든 로그 항목이 (내부 용) 기본 키가있는 로그 및 개정 번호 (I 자동 증가되고 싶어하는 INT 값)를 갖고 싶어.
해결 방법으로, 이것은 순서로 수행, 아직 나는 순서 SQLite는 지원되지 않습니다 있다고 생각 될 수있다.
해결법
-
==============================
1.당신은 삽입을 할 때 선택 최대 (ID) 일을 할 수 있습니다.
당신은 삽입을 할 때 선택 최대 (ID) 일을 할 수 있습니다.
예를 들면 :
INSERT INTO 로그인 (아이디, rev_no, 설명) VALUES ((SELECT MAX (ID) 로그 FROM + 1) 'rev_Id', '일부 설명')
ID가 기록 없을 것이기 때문에이 빈 테이블에 실패 할 주 0하지만 중 하나 제 1 더미 항목을 추가하거나이에 SQL 문을 변경할 수 있습니다 :
INSERT INTO 로그인 (아이디, rev_no, 설명) VALUES ((SELECT IFNULL (MAX (ID), 0)의 기록에서 + 1) 'rev_Id', '일부 설명')
-
==============================
2.SQLite는 자동으로 고유 한 행 ID (ROWID)를 생성한다. 이 필드는 일반적으로 사용하는 "* ... 선택",하지만 "* ... 선택 ROWID"를 사용하여이 ID를 가져올 수있을 때 밖으로 남아 있습니다. SQLite는 문서에 따라, 그들은 자동 증가의 사용을 억제주의하십시오.
SQLite는 자동으로 고유 한 행 ID (ROWID)를 생성한다. 이 필드는 일반적으로 사용하는 "* ... 선택",하지만 "* ... 선택 ROWID"를 사용하여이 ID를 가져올 수있을 때 밖으로 남아 있습니다. SQLite는 문서에 따라, 그들은 자동 증가의 사용을 억제주의하십시오.
create table myTable ( code text, description text ); insert into myTable values ( 'X', 'some descr.' ); select rowid, * from myTable;
:: 결과가 될 것입니다; 1 | X | 일부 DESCR.
당신이 외래 키로이 ID를 사용하는 경우에는 ROWID를 내보낼 수 있습니다 -과 데이터 무결성을 유지하기 위해 올바른 값을 가져;
insert into myTable values( rowid, code text, description text ) values ( 1894, 'X', 'some descr.' );
-
==============================
3.당신이 저장 프로 시저를 통해 삽입을하고 있다면 당신은 거기에 같은 논리 것을 넣어, 다음 검사 이전의 높은 가치와 그것을 증가하는 트리거 (http://www.sqlite.org/lang_createtrigger.html)를 사용하거나 수 .
당신이 저장 프로 시저를 통해 삽입을하고 있다면 당신은 거기에 같은 논리 것을 넣어, 다음 검사 이전의 높은 가치와 그것을 증가하는 트리거 (http://www.sqlite.org/lang_createtrigger.html)를 사용하거나 수 .
-
==============================
4.필요가 그것을 언급하지하는 나는 그래서 내 대답은 이카루스의 매우 유사하다.
필요가 그것을 언급하지하는 나는 그래서 내 대답은 이카루스의 매우 유사하다.
필요한 경우 당신은 더 진보 된 방법으로 이카루스의 솔루션을 사용할 수 있습니다. 다음 기차 예약 시스템을위한 좌석 상황 테이블의 예입니다.
insert into Availiability (date,trainid,stationid,coach,seatno) values ( '11-NOV-2013', 12076, 'SRR', 1, (select max(seatno)+1 from Availiability where date='11-NOV-2013' and trainid=12076 and stationid='SRR' and coach=1) );
from https://stackoverflow.com/questions/6982173/sqlite-auto-increment-non-primary-key-field by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 여러 행의 마지막 삽입 된 ID를 가져 (0) | 2020.05.24 |
---|---|
[SQL] SQL에서 어떻게 정수의 최대 값을받을 수 있나요? (0) | 2020.05.24 |
[SQL] 에서 SQL 필터 기준은 기준을 가입하거나 더 효율적으로 절이고있는 (0) | 2020.05.24 |
[SQL] 어떻게 엔티티에 LINQ와 SQL 'LIKE'를 사용 하는가? (0) | 2020.05.24 |
[SQL] 날짜 시간 데이터 유형에 DATETIME2 데이터 형식의 변환 범위를 벗어난 결과? (0) | 2020.05.24 |