2014-01-29 2 views
-1

안녕하세요, 값이 열에 있는지 확인하려면 트리거를 작성해야합니다. 그렇다면 삽입하고 오류를 통해 삽입하십시오. DEFAULT 또는 NONDEFAULT 값만 두 개 (bool과 동일) 가질 수있는 열이 있습니다.삽입 전의 트리거

이 열은 여러 NONDEFAULT 값을 가질 수 있지만 열에는 하나의 DEFAULT 값만 가질 수 있습니다.

DEFAULT가 테이블에있는 경우 오류가 발생해야하며 새 행을 삽입하지 않아야합니다.

친절

create trigger status_value before insert on TABLE for each row 
begin 
if new.status=DEFAULT AND select count(status) from TABLE where status=DEFAULT) 
then 
signal sqlstate = '4500' 
set message_text = 'can not update, default value already present' 
end if; 
end; 

답변

1

이처럼 시도 도움이 : 나는 믿고있어

delimiter $$ 
create trigger status_value before insert on TABLE for each row 
begin 
if (new.status='DEFAULT' AND EXISTS (select 1 from TABLE where status='DEFAULT')) 
then 
signal sqlstate = '4500' 
set message_text = 'can not update, default value already present'; 
end if; 
end $$ 
delimiter ; 

을, 당신이 컬럼의 값이 문자열 "기본"이 아닌 기본값 당신에게 의미하는 것이 테이블을 만들 때 정의됩니다.

+0

감사합니다. .. :) :) – Ashutosh