2012-11-25 4 views
5

현재 내 DB에서이 테이블을 가지고 :MySQL의 독특한 열 문자열

CREATE TABLE `twMCUserDB` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `mc_userName` text NOT NULL, 
    `mc_userPass` text NOT NULL, 
    `tw_userName` text NOT NULL, 
    `tw_userPass` text NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 

이제 내가 뭘 원하는 열 mc_userName가 (단지 ID 등)에 고유 한 것입니다. 그러나 mc_userName은 문자열이어야합니다.

지금 내가 또한 기본 키를 만들려고했지만 문제가 해결되지 않았다 ...

그래서 너희들에 대한 나의 질문은 다음과 같다 :

나는 테이블에 데이터를 추가, 우선 mc_userName이 이미 있는지 확인해야합니까? 또는 Mysql에 내장 된 함수가 있습니다. 삽입 쿼리 나 다른 곳에서 사용할 수 있습니다.

답변

6

그냥 UNIQUE

`mc_userName` text NOT NULL UNIQUE, 

또는

를 추가
CREATE TABLE `twMCUserDB` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `mc_userName` text NOT NULL, 
    `mc_userPass` text NOT NULL, 
    `tw_userName` text NOT NULL, 
    `tw_userPass` text NOT NULL, 
    PRIMARY KEY (`id`), 
    CONSTRAINT tb_uq UNIQUE (mc_userName) 
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1; 
내가 할 수
+0

어떻게 그 열을 UNIQUE에 더할 수 있습니까? Navicat 데이터베이스 편집기 및 phpmyadmin, 사용하고 있지만이 처리 할 수있는 뭔가를 찾을 수 없습니다 ... – Mathlight

+0

이 DDL 실행하여 테이블을 변경하려고 할 수 있습니다 : '변경 테이블 twMCUserDB UNIQUE tb_uq (mc_userName) 추가' –

+0

'[Err] 1170 - BLOB/TEXT 컬럼 'mc_userName'키 길이없이 키 사양에서 사용됨 – Mathlight

1

id 대신 'mc_userName'을 기본 키로 사용하지 않는 이유는 무엇입니까? 이 게시물에 설명 된대로 mc_userName의 데이터 유형을 VARCHAR로 변경해야합니다 : MySQL error: key specification without a key length. 또는 id와 username이 포함 된 복합 기본 키를 만듭니다.

데이터베이스 디자인으로 인해이 작업을 수행 할 수없는 경우 쿼리에 EXISTS 키워드를 사용하십시오. 자세한 내용은 여기를 보라 : http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html

+0

, 내가 오류 때문에'MySQL의 오류 1170가 : BLOB/TEXT 키 길이가없는 키 사양에 사용되는 열 '... 그리고 그 링크를 살펴 보겠습니다. – Mathlight

+0

할 수 없습니까? – w0051977

+0

미안, 나는 그 첫 번째 부분을 의미 ... mc_userName ID 대신 기본 키 만들기 .... 나는 위에서 말한 오류가 발생 – Mathlight