2011-08-29 3 views
2
내 기업의 제약 조건은

:시행 엔터프라이즈 제약

There may be only 10 articles in this table at anyone time 

MySQL의에서이 기업의 제약 조건을 구현하는 가장 좋은 방법은 무엇입니까 데이터 베이스? 순전히 코드에 의해 처리 될까요? 이러한 제약 조건을 적용하기 위해 데이터베이스에서 어떤 것을 변경해야합니까?

답변

1

나는 방아쇠를 사용할 것입니다.

DELIMITER $$ 

CREATE TRIGGER bi_articles_each BEFORE INSERT ON articles FOR EACH ROW 
BEGIN 
    DECLARE number_of_articles INTEGER; 
    SELECT count(*) INTO number_of_articles FROM articles; 
    IF number_of_articles > 10 THEN 
    //select from a non_existing query to force an error and prevent the insert 
    SELECT error 
    FROM `There may be only 10 articles in the article table at anyone time`; 
    END IF; 

END $$ 

DELIMITER ; 

참조 :

은 당신과 같이이 작업을 수행 할 수 있습니다
http://dev.mysql.com/doc/refman/5.0/en/triggers.html
http://www.databasedesign-resource.com/mysql-triggers.html

오류 발생이 약간 투박입니다 만, 그렇지 않으면 그것이 마치 마법처럼 작동합니다. 나는 항상 그것을 사용한다.

트리거에 대한 좋은 점은 사용하는 삽입 벡터에 관계없이 작동한다는 것이고 삽입, 삭제 및 업데이트에 대한 (사용) 표준 SQL을 유지할 수 있다는 점입니다. 매우 편리 할 수 ​​있습니다.

0

기사를 삽입하는 데 독점적으로 사용되는 새 기사를 삽입하기위한 저장 프로 시저를 만듭니다. 사용자 지정 제약 조건이 있는지 확인합니다.

사용자 지정 제약 조건을 위반하면 클라이언트에 어떤 제약 조건이 위반되었는지 (예 : 반환 변수를 통해) 알리고 기사 삽입을 건너 뛸 수 있습니다.