필드 중 하나가 True이면 3 개의 필드에 UNIQUE INDEX를 추가하고 싶습니다. 즉 1과 같습니다.하나의 필드가 하나의 값일 때 3 필드의 Mysql UNIQUE INDEX
UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered) WHERE delivered = 1;
나는 Alter 문이 필요하고 Create Table 문에이를 추가하는 방법이 필요하다.
필드 중 하나가 True이면 3 개의 필드에 UNIQUE INDEX를 추가하고 싶습니다. 즉 1과 같습니다.하나의 필드가 하나의 값일 때 3 필드의 Mysql UNIQUE INDEX
UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered) WHERE delivered = 1;
나는 Alter 문이 필요하고 Create Table 문에이를 추가하는 방법이 필요하다.
당신은 테이블의 행의 일부에 인덱스를 만들 수 없습니다 - 테이블 만에 모든 행을 가격에 상관없이.
나는 ALTER 문을 필요로하는 방법과 만들기 표 문
표를 만드는 동안 당신은, 기존 테이블의 정의를 변경하는 ALTER 테이블을 사용하여에 추가 테이블을 생성하고, 따라서, 필드의 테이블은 .... 이미
ALTER TABLE yourtablename
ADD UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered);
존재하거나 이미 존재하지 않는 경우 ....
CREATE TABLE yourtablename (
package_id INT NOT NULL,
box_id INT NOT NULL,
delivered BOOLEAN,
...
UNIQUE INDEX pkg_box_delivered (package_id, box_id, delivered)
);
경우 일부 행에 인덱스를 선택적으로 적용 할 수 없듯이 고유 한 제약 조건을 선택적으로 적용 할 수는 없습니다. 이를 시행하기 위해 트리거를 추가해야합니다.
감사합니다. 그러나 저는 이미 그 진술을 알고있었습니다. 문제는 배달 된 항목이 유일 할 때만 고유하게하고 싶지만 항목을 테이블에 입력 할 때 액세스 할 수 없으므로 트리거를 사용할 수 없습니다. – Avril
나는 당신이 "나는 그것들을 전달할 때 유일 해지기를 바란다."라는 말의 의미를 이해하지 못한다. 필드들의 결합 된 가치가 전달 = 1 일 때 유일하다는 것을 의미한다면 나의 대답에서 마지막 문장을 보아라. . – symcbean
나는 방아쇠가 필요하다는 것을 알고 있지만 어떻게 생겼는지는 모른다. 또한 이미 데이터베이스에 삭제할 수없는 데이터가 있습니다. – Avril
분명히하기 위해,'package_id'와'box_id'에 대해 두 개의 레코드가 같은 값을 갖고 있지는 않지만'delivered = 1' 만있는 곳에 제약 조건을 적용하고 싶습니까? – eggyal