2014-01-21 2 views
0

키가있는 테이블이 기본 키입니다. 자동으로 증가되어야하는 seqNo 키를 추가하고 싶지만 자동 증가로 만들 수 없습니다. 기본 키 이외의 자동 증가 열 추가

이미 하나의 기본 키가 있기 때문에

,

그것은 SEQNO의 자동 증가를 할 수 있습니까? 현재 seqNo은 존재하지 않습니다. 그것을 추가하고 싶습니다

+0

가능한 것이 틀림 없습니다. 대부분의 데이터베이스 시스템에서 자동 증가/식별/순차 번호 및 기본 키는 완전히 직교 개념입니다. –

+1

당신은 이것을 할 수 없습니다. 게다가, 왜 너는하고 싶니? – Strawberry

+0

@Strawberry : 내가 가지고있는 레코드의 합계가 몇 개인 지, whoch numner에 어떤 레코드가 있는지 기록을 유지하려면 –

답변

1

복합 기본 키를 가질 수 있습니다. 두 개 이상의 열로 이루어진 기본 키입니다.

CREATE TABLE userdata (
    userid integer, 
    userdataid integer, 
    info char(200), 
    primary key (userid, userdataid) 
); 
+1

이 정보의 관련성을 볼 수 없습니다. – Strawberry

+0

@Strawberry yo는 복합 기본 키를 가질 수 있지만 autoincrement로 설정할 수있는 열은 하나뿐입니다. ** ** fiddle here ** ** (http://sqlfiddle.com/#!2/e35d9/2) –

+0

@mkhalidkunaid 나는 auto_increment의 유틸리티를 잘 알고있다. 고마워. 이 '문제'와 관련이 없습니다. – Strawberry

1

다음과 같은 옵션이 있습니다.

  1. 모든 삽입 문
  2. 사용 순서에 열 값을 증가 트리거를 확인하지만 시퀀스 값이 생성되면 다시 생성되지 않습니다 (의미, 당신은 당신의 가치의 격차 경우를 얻을 것 당신의 삽입
1

인 Vignesh 행 (8)의 수, testinc의 값이 (9)이라는 다음 ...

DROP TABLE IF EXISTS test; 

CREATE TABLE test 
(testID int(11) NOT NULL 
, string varchar(45) DEFAULT NULL 
, testInc int(11) NOT NULL AUTO_INCREMENT 
, PRIMARY KEY (testID) 
, KEY testInc (testInc) 
); 

INSERT INTO test 
(testID 
, string 
) values 
(1 
,'Hello' 
); 

INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y; 
INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y; 
INSERT INTO test (testid,string) SELECT x.testid + y.max_test,string FROM test x JOIN (SELECT MAX(testid) max_test FROM test)y; 
Query OK, 4 rows affected (0.03 sec) 

SELECT * FROM test; 
+--------+--------+---------+ 
| testID | string | testInc | 
+--------+--------+---------+ 
|  1 | Hello |  1 | 
|  2 | Hello |  2 | 
|  3 | Hello |  3 | 
|  4 | Hello |  4 | 
|  5 | Hello |  6 | 
|  6 | Hello |  7 | 
|  7 | Hello |  8 | 
|  8 | Hello |  9 | 
+--------+--------+---------+ 

주를 고려) 어떤 이유로 실패 다른. 이것은 OP가 원하는 것이 아닙니다. PK를 생성하는 데 사용한 MAX() 트릭도 런타임 오류가 발생하기 때문에 좋지 않습니다. 동일한 http://www.sqlfiddle.com/#!2/d29a5b/1 요점은

... 바이올린 순차 번호를 기억하는 것은 무의미하다.

+0

감사하지만, phpmyadmin을 사용하는 동안 새 열 seq_no를 추가했습니다. 인덱스 및 자동 증가로 설정하십시오. 오류를 제공하는 : 다중 기본 키 정의. 나는 자동 증분 컬럼을 추가하기 위해 여기에 존재하는 테이블을 갱신해야한다. –

+0

'alter table frrole_combined seq_no를 추가한다. varchar (64) not null; '이게 뭐가 잘못 됐니? –

+0

@Programming_crazy 당신은 정말로 내 말을 듣지 않을 겁니다, 그렇죠? – Strawberry