2017-12-09 11 views
1

이 SQL을 처음 사용하고 있으며,이 경우 문제가 무엇인지 알고 싶습니다.ORA-02253 : 제약 조건 지정이 허용되지 않습니다. - 외래 키

"제약 조건 지정이 허용되지 않습니다." 원인 : 여기에는 제약 조건 지정이 허용되지 않습니다.

코드의 마지막 줄에
CREATE TABLE CLIENTE(
RUT VARCHAR2(10) CONSTRAINT CLIENTE_PK PRIMARY KEY, 
NOMBRE VARCHAR2(20) CONSTRAINT NOMBRE_CLIENTE NOT NULL, 
APELLIDOP VARCHAR2(30) CONSTRAINT APELLIDOP_CLIENTE NOT NULL, 
APELLIDOM VARCHAR2(30) CONSTRAINT APPELIDOM_CLIENTE NOT NULL, 
DIRECCION VARCHAR2(100) CONSTRAINT DIRECCION_CLIENTE NOT NULL, 
TELEFONO NUMBER(8) CONSTRAINT TELEFONO_CLIENTE NOT NULL, 
EMAIL VARCHAR2(255) CONSTRAINT EMAIL_CLIENTE NOT NULL, 
FECHA_NACIMIENTO DATE CONSTRAINT FECHA_NACIMIENTO_CLIENTE NOT NULL, 
SEXO CHAR(1) CONSTRAINT SEXO_CLIENTE NOT NULL, 
COD_CIUDAD NUMBER(3) CONSTRAINT CLIENTE_CIUDAD_FK FOREIGN KEY (COD_CIUDAD) 
REFERENCES CIUDAD (COD_CIUDAD) 
); 
+0

[ORA-02253의 사용 가능한 복제를 사용하는 열 선언에서 제약 조건을 분리해서해야한다 여기에 허용되지 않음] (https://stackoverflow.com/questions/45751511/ora-02253-constraint-specification-not-allowed-here) – gile

+0

당신이 얻으려고하는 것에 대한 또는 더 많은 에러에 대해 더 많은 정보를 제공해주세요. – Guglie

+0

테이블을 생성해야하지만 제약이 허용되지 않는다고 알려줍니다. – Derezed

답변

0

, 당신은 열 cod_ciudad을 정의하고 당신은 외래 키 제약 조건을 추가 할 수 있습니다.

두 가지 제약 조건이 있습니다. IN-LINE 제약 조건은 열 이름 바로 뒤에 정의되며 데이터 형식 ("해당"열에 만 영향을 미침)과 OUT-OF-LINE 제약 조건은 테이블, 모든 컬럼 정의 후. 둘 이상의 열과 관련된 제약 조건은 라인 외부 제약 조건 일 수 있습니다.

코드에 정의한 제한 조건은 하나의 열에 만 적용되며 더 나아가 cod_ciudad에 있습니다. 열 정의 (이름 및 데이터 형식) 사이에 쉼표를 추가하지 않았습니다. 이는 IN-LINE 제약 조건에 대한 올바른 구문입니다. 그러나 IN-LINE 외래 키 제약 조건은 키워드 FOREIGN KEY를 필요로하지 않으며 괄호 안에 열 이름을 반복 할 필요가 없습니다. IN-LINE 인 제한 조건은 "현재"열만 참조 할 수 있습니다. 그래서 : 코드를 수정하는 한 가지 방법은 코드에서 FOREIGN KEY (COD_CIUDAD)을 제거하는 것입니다.

수정하려면 제약 조건을 OUT-OF-LINE 제약 조건으로 만드는 것입니다. 구문은 정확하지만 키워드는 CONSTRAINT 앞에 쉼표 (,)를 추가해야합니다.

0

이 시도 : 제약 사양 :

CREATE TABLE CLIENTE(
    RUT    VARCHAR2(10) NOT NULL, 
    NOMBRE   VARCHAR2(20) NOT NULL, 
    APELLIDOP  VARCHAR2(30) NOT NULL, 
    APELLIDOM  VARCHAR2(30) NOT NULL, 
    DIRECCION  VARCHAR2(100) NOT NULL, 
    TELEFONO   NUMBER(8)  NOT NULL, 
    EMAIL   VARCHAR2(255) NOT NULL, 
    FECHA_NACIMIENTO DATE   NOT NULL, 
    SEXO    CHAR(1)  NOT NULL, 
    COD_CIUDAD  NUMBER(3) 
); 

ALTER TABLE CLIENTE 
    ADD CONSTRAINT CLIENTE_PK PRIMARY KEY (RUT) 
    USING INDEX; 

ALTER TABLE CLIENTE 
    ADD CONSTRAINT CLIENTE_CIUDAD_FK FOREIGN KEY (COD_CIUDAD) 
    REFERENCES [FOREIGN KEY TABLE NAME] ([PRIMARY KEY COLUMN OF FOREIGN KEY TABLE]); 
0

당신이

그냥 다음 명령을

CREATE TABLE CLIENTE(
RUT VARCHAR2(10) CONSTRAINT CLIENTE_PK PRIMARY KEY, 
NOMBRE VARCHAR2(20) CONSTRAINT NOMBRE_CLIENTE NOT NULL, 
APELLIDOP VARCHAR2(30) CONSTRAINT APELLIDOP_CLIENTE NOT NULL, 
APELLIDOM VARCHAR2(30) CONSTRAINT APPELIDOM_CLIENTE NOT NULL, 
DIRECCION VARCHAR2(100) CONSTRAINT DIRECCION_CLIENTE NOT NULL, 
TELEFONO NUMBER(8) CONSTRAINT TELEFONO_CLIENTE NOT NULL, 
EMAIL VARCHAR2(255) CONSTRAINT EMAIL_CLIENTE NOT NULL, 
FECHA_NACIMIENTO DATE CONSTRAINT 
FECHA_NACIMIENTO_CLIENTE NOT NULL, 
SEXO CHAR(1) CONSTRAINT SEXO_CLIENTE NOT NULL, 
COD_CIUDAD NUMBER(3), 
CONSTRAINT CLIENTE_CIUDAD_FK FOREIGN KEY (COD_CIUDAD) 
REFERENCES CIUDAD (COD_CIUDAD) 
);