DB/Oracle

[10g] Creating and Altering a Constraint

Edward. K 2007. 5. 17. 15:58
반응형
Mysql 로 개발했던 넘을 ORACLE로 바꿔 본다..



간만에 ORACLE 쿼리문을 만들어서 데이터를 넣었는데..오류가 발생했다...
ORA-04098: 'EDUOLD.BI_TBL_USERINFO' 트리거가 부적합하며 재검증을 실패했습니다
흐음..재미있는 버그들(정확하게는 오류가 아닌..ㅡ,.ㅡ;)
이넘들 자연으로 풀어주기 위해 제약조건없이 테이블을 생성하기로 한다.
기본 테이블로만 테이블을 생성해주고 테스트 진행하기로 하고..
그간 잊었던 쿼리문을 찾아보자...--+

테이블 제약조건 생성.
      = Oracle 10g  Help Topic 에서 발췌 =

Creating and Altering a Constraint With SQL

Creating, Altering, and Dropping Constraints Using SQL

-- add a primary key constraint
  ALTER TABLE personal_info
    ADD CONSTRAINT personal_info_pkey
    PRIMARY KEY (employee_id);


-- add a foreign key constraint
  ALTER TABLE personal_info
    ADD CONSTRAINT personal_info_fkey
    FOREIGN KEY (employee_id) REFERENCES employees (employee_id)
    ON DELETE CASCADE;


-- add a unique constraint
  ALTER TABLE personal_info
    ADD CONSTRAINT personal_info_unique_con
    UNIQUE (social_security_id);


-- add a check constraint
  ALTER TABLE personal_info
    ADD CONSTRAINT personal_info_check_con
    CHECK ( dependents_claimed > 0);


-- disable a constraint
  ALTER TABLE personal_info
    DISABLE CONSTRAINT personal_info_check_con;


-- enable a constraint
  ALTER TABLE personal_info
    ENABLE CONSTRAINT personal_info_check_con;


-- drop a constraint
  ALTER TABLE personal_info
    DROP CONSTRAINT personal_info_check_con;



___________________________________

-- 파란색 라인이 지워지고...
CREATE TABLE  "USER" (
      "ID"                    VARCHAR(20) NOT NULL ENABLE,
      "GROUP"                VARCHAR(20) NOT NULL ENABLE
     CONSTRAINT "USER_PK" PRIMARY KEY ("ID") ENABLE
)
CREATE TABLE  "USERINFO" (
       "NO"                    NUMBER(8,0) NOT NULL ENABLE,
       "ID"                    VARCHAR(20) NOT NULL ENABLE,
       "PASS"                VARCHAR(20) NOT NULL ENABLE,
       "NAME"                VARCHAR(12) NOT NULL ENABLE ,
     CONSTRAINT "USERINFO_PK" PRIMARY KEY ("NO") ENABLE,
     CONSTRAINT "USERINFO_FK" FOREIGN KEY ("ID")
      REFERENCES  "USER" ("ID") ENABLE
)
------
기본테이블로 테스트를 진행한담에.. (제약전, 데이터 잘 처리하나 보려구.^^;;)
차후에 다음과 같이 제약조건을 추가하기로 한다..

  ALTER TABLE USER
    ADD CONSTRAINT USER_PK
    PRIMARY KEY (ID);

  ALTER TABLE USERINFO
    ADD CONSTRAINT USERINFO_PK
    PRIMARY KEY (NO);

  ALTER TABLE USERINFO
    ADD CONSTRAINT USERINFO_FK
    FOREIGN KEY (ID) REFERENCES USER (ID)
    ON DELETE CASCADE;
반응형