2012-04-04 3 views
1

MySQL에서 VARCHAR 열에 대한 제약 조건을 설정할 수 있습니까?MySQL에서 VARCHAR 열에 대한 제약 조건을 설정할 수 있습니까?

하나 이상의 특정 값 행을 허용하고 싶지 않습니다.

______________ 
    | MyTable | 
    -------------- 
    | pk id INT | 
    | name VARCHAR | 

"peter"라는 동일한 이름의 두 행을 삽입하면 오류가 발생합니다. 따라서 제약 조건은 이미 "피터"가 저장되어 있는지 확인해야합니다. 그러나 다른 값의 여러 행이 작동해야합니다.

INSERT INTO MyTable VALUES (1, "peter"); 
INSERT INTO MyTable VALUES (2, "peter"); // This should fail 
INSERT INTO MyTable VALUES (3, "steven"); 
INSERT INTO MyTable VALUES (4, "steven"); // Shall succeed 

MySQL에서 어떤 식 으로든 특정 값을 확인할 수 있습니까?

+1

'where'절의 일부로 check (name <> 'peter') 행을 삽입하는 동안 cartisan 제품을 사용하여 목록과 일치하는지 확인하십시오. – Milee

+0

은 의도 한 stevens와 오타가 동일한 id입니까? – oezi

+1

변경 테이블 MyTable 추가 고유 인덱스'name' ('name'); – hjpotter92

답변

2

없이, 제약 조건을 사용 불가능 이잖아. nameunique constraint을 추가 할 수는 있지만 "피터"가 아닌 모든 중복 항목을 앞당길 수 있습니다. 그 말로는, 당신 스스로이 추가 점검을해야 할 것입니다.

+0

[여기에 영어 링크가 있습니다.] (http://dev.mysql.com/doc/refman/5.1/en/constraint-primary-key.html) – Austin

0

열을 고유로 설정하십시오. 중복 값을 삽입하려고하는 MySQL 쿼리가 실패합니다.

INSERT : insert into <table> (<columns>,unique(<unique column>));

UPDATE : alter table <table> add unique(<unique column>));

+0

예, 그렇다고해서 해당 열에 대해 모든 항목이 고유하게됩니다. 나는 단지 하나의 가치를 독특하게 만들고 싶다. 위의 예에서 필자는 "피터"를 "스티븐"이 아닌 유일하게 만들고 싶습니다. – Rox

+0

오, 당신은 단지'피터'가 중복되지 않도록 잠그고 싶지만 여러개의'스티브'항목을 허용하고 싶습니까? – Francisc

+0

바로! 하지만 아마도 oezi가 말한 것처럼 가능하지 않을 수도 있습니다 :-) – Rox

관련 문제