2016-07-16 4 views
0

this 예제를 따라 SQLite에서 제약 조건을 작성하는 방법을 시도했습니다. 그것이 실패했습니다 두 번째 삽입 쿼리에SQLite에서 고유 한 제약 조건을 구축하는 방법

  • insert into users(user_id, row_id) values(1, 13)
  • insert into users(user_id, row_id) values(2, 13)

: 내가 삽입을 만들기 위해 노력하고보다

CREATE TABLE `users` (
    `user_id` INTEGER NOT NULL DEFAULT 1 PRIMARY KEY AUTOINCREMENT, 
    `row_id` INTEGER NOT NULL, 
    unique (user_id, row_id) 
) 

:

나는 테이블을 생성 다음 메시지 :

012 3,516,

UNIQUE 제약 조건이 실패 users.user_id : 나는 다음 행을 허용 할 사용자로 (USER_ID, ROW_ID) 값 (2, 13)

를 삽입 :

1,13 
2,13 
1,5 

을 그리고 허용하는

1,13 
1,13 

답변

1

PRIMARY KEY 설계 UNIQUE 0입니다이므로 user_idUNIQUE이어야합니다.

그런 다음 user_idrow_id 열에 UNIQUE 제약 조건이 있습니다. 당신은 PRIMARY KEY을 구성 사용할 수


:

CREATE TABLE `users` (
    `user_id` INTEGER NOT NULL, 
    `row_id` INTEGER NOT NULL, 
    PRIMARY KEY (user_id, row_id) 
); 

INSERT INTO users(user_id, row_id) VALUES(1, 13); 
INSERT INTO users(user_id, row_id) VALUES(2, 13); 
INSERT INTO users(user_id, row_id) VALUES(1, 5); 

INSERT INTO users(user_id, row_id) VALUES(1, 13); 
-- Error: UNIQUE constraint failed: users.user_id, users.row_id 

SqlFiddleDemo

-1

기본 키가 문제를 일으키는은 한 번 열은 복제 할 수 없습니다 차로 정의됩니다. 기본 키를 삭제하십시오.

CREATE TABLE `users` (
`user_id` INTEGER AUTO INCREMENT NOT NULL DEFAULT 1, 
`row_id` INTEGER NOT NULL, 
unique (user_id, row_id) 

)

관련 문제