mysql 테이블 생성시 default 에 연산식 지정 문의 0 2 2,310

by 오뚝이 [MySQL] mysql default [2017.02.10 10:59:23]


지인이 mysql 문의를 해왔는데..
보안으로 구글링이 안되 문의 드립니다.
제가 테스트 할수 있는 환경도 안됩니다. ㅠㅠ

mysql에서 테이블 생성시 default에 연산식을 넣을 수 있나요?
예를 들어 아래와 같습니다.

create table t_test (
a int ,
b int,
c int default (a+b),
d int default (a * 100),
e int as (a + b)       /* 리퍼런스 보니 as 뒤에도 뭔가를 할수도 있는것 같은데..^^ */
);

insert into t_test(a, b) values (10, 20);

지인분이 안된다고 해서
고수님 가르침 부탁드립니다.

 

 

 

by jkson [2017.02.10 11:37:49]

MYSQL에서는 어떤지 정확히 모르겠지만 DEFAULT에 열명을 지정하실 수 없을텐데요.

정 해당 기능이 필요하시면 BEFORE 트리거 만드시고 C, D, E 값이 NULL일 경우 해당 값으로 치환하게 하셔야 할 것 같습니다.

 

CREATE OR REPLACE TRIGGER T_TEST_TG
BEFORE INSERT OR UPDATE
ON T_TEST
REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
DECLARE
BEGIN

    IF :NEW.C IS NULL THEN
       :NEW.C := NVL(:NEW.A,0) + NVL(:NEW.B,0);
    END IF;  
    
    IF :NEW.D IS NULL THEN
       :NEW.D := NVL(:NEW.A,0) * 100;
    END IF; 
    
    IF :NEW.E IS NULL THEN
       :NEW.E := NVL(:NEW.A,0) + NVL(:NEW.B,0);
    END IF; 

END T_TEST_TG;

 


by 오뚝이 [2017.02.10 11:49:26]

답변 감사합니다.
참고하겠습니다.^^

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입