2013-04-07 3 views
1

왜 이것이 나쁜 생각인지 많은 것을 읽었지만 여기서는 왜 이것을하고 싶습니다. 내 테이블을 이렇게 보이게하고 싶습니다.기본 키가 아닌 자동 증가 열을 만듭니다.

id | article | link | text_cont 
1 | //text | www... | parsed text content 
2 | //text2 | www..2 | parsed text content2 

등등. 왜 내 링크가 기본 키가되기를 원하기 때문에 내 ID를 기본 키로 사용하지 않으려 고하는 이유는 무엇입니까? 더 많은 데이터를 얻기 위해 크론 작업을 실행할 때 내 링크 필드에 중복 필드가 없습니다. 표. INSERT IGNORE를 사용할 수 있으며 동일한 링크가 두 번 포함되지 않습니다. 그러나 나는 id가 자동으로 증가하기를 원하므로 id를 사용하여 "무한 스크롤"을 사용할 수 있습니다.

이 작업을 수행 할 수 있습니까? 나는 이것이 이것을 가질 좋은 이유라고 생각하기 때문에 정말 희망한다 ...

+2

정직하게 말하면, 나는 여전히'id'를 프라이 머리 키로 만들고'link'를 대체 키로 만들 것입니다 : http://en.wikipedia.org/wiki/Alternate_key#Alternate_key – NPE

+0

고유 한 항목으로 내 항목을 복제하지 않습니까? – user2025469

답변

1

텍스트 필드를 자동 증가시킬 수 없다.

또한 ID를 키로 사용하지 않으려면 왜 ID를 원하니? 당신이 당신의 cron 작업을 실행하는 방법을 변경해야하는 것처럼,하지 스키마 보인다

- 당신은 여전히 ​​AI 필드 만드는 방법을 알고 싶다면

:

link_id int NOT NULL AUTO_INCREMENT 

그리고 대한을 기존 데이터 :

ALTER TABLE articles MODIFY COLUMN link_id int(4) auto_increment 
+0

"추가로드"버튼과 같이 무한 스크롤을 실행할 수 있도록 자동 증가 ID가 필요하다고 썼습니다. 여전히 ID가 int가되고 자동 증가가되기를 원합니다. – user2025469

+0

그러면 ID는 실제로 필요한 모든 것 같고 링크에 고유 한 제약이 있습니까? URL의 일부만 변경되는 행을 많이 예상하는 경우 www가 아닌 ​​변경 사항을 저장하는 것도 고려해 볼 수 있습니다. 등등 데이터베이스 크기를 유지하기 위해 –

+0

그래, 나는 그것이 작동하도록 생각합니다. id를 1 차로 유지하고 링크에 고유하게두면 항목이 중복되지 않습니다. 사람들이 중복을 제거하기 위해 두 번째 임시 테이블을 만든 다른 게시물을 보았 기 때문에 이것은 쉽고 간단합니다. 이것은 훨씬 쉽습니다! – user2025469

0

자동 증가가 가능하도록 기본 키가 필요하지 않습니다. 이것은 잘 작동합니다.

create table dude (
    id int auto_increment, 
    link varchar(255), 
    primary key (link), 
    unique key (id) 
); 

insert into dude values (null, "www.google.com"); 
insert into dude values (null, "www.stackoverflow.com"); 
insert into dude values (null, "www.google.com"); 

최고의 테이블 디자인은 아니지만 질문에 대한 답변입니다.

관련 문제