답변1) 틀렸습니다. = 연산자는 같다는 뜻입니다. 그러므로 zip_code 가 '\[0/9\]\[0/9\]' 와 정확히 일치하지 않으면 입력을 받지 못하게 됩니다. Regular Expression 연산자는 ~/~* 등이 있습니다. 다음과 같이 바꾸어야 할 것 같군요.
create table t (t text check (t ~ '[0/9][0/9]'));
답변2) 어떤 에러가 나는가요. 에러 메시지도 같이... :/)
>>궁금한자3 님께서 쓰시길<<
:: (질문1)
:: check 제약조건을 정의 할때...
::
:: create table test
:: (
:: zip_code char(6) not null check(zip_code='[0/9][0/9]')
:: );
::
:: 위와 같은 표현이 맞나요?
::
:: 제가 하고 싶은 것은 zip_code필드에 숫자형식으로 두자리의 스트링만
:: 들어오게 하는 것입니다...
:: 즉, 문자열로 '24' , '45' 와 같이 말입니다...
:: 어떻게 할 수 있을까요?
::
:: (질문2)
:: 트리거를 하나 작성하려고 합니다...
:: language는 plpgsql로 작성하려 합니다...
:: 임의의 A_Table이라는 테이블의 Status라는 필드에 'AC'라고 업데이트되면,
:: 자동으로 B_Table이라는 테이블로 A_Table의 id,name을 복사하려 합니다...
:: 다음 구문이 에러가 나는데, 무엇이 잘못된 것인지요?
:: 또 어떻게 해야 맞는 구문인지요?
::
:: ######################################################
:: CREATE FUNCTION fncAutoInsert()
:: AS '
:: BEGIN
::
:: IF NEW.Status='AC' THEN
:: insert into B_Table(id,name) select id,name from NEW
::
:: END IF;
:: END;
:: ' language 'plpgsql';
:: ####################################################
::
|