2017-12-09 11 views
1

Ich bin neu zu diesem SQL und ich wollte wissen, was das Problem in diesem Fall ist.ORA-02253: Einschränkung Spezifikation nicht erlaubt - Fremdschlüssel

"Constraint-Spezifikation nicht erlaubt hier" Ursache: Constraint-Spezifikation ist hier in der Aussage nicht erlaubt.

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

Mögliche Duplikat [ORA-02253 verwenden: Constraint-Spezifikation hier nicht erlaubt] (https://stackoverflow.com/questions/45751511/ora-02253-constraint-specification-not-allowed-here) – gile

+0

Bitte geben Sie weitere Informationen darüber, was Sie erreichen möchten oder welchen Fehler Sie erhalten – Guglie

+0

Ich brauche eine Tabelle erstellt werden, aber es sagt mir, dass die Einschränkung nicht zulässig ist – Derezed

Antwort

0

In der letzten Zeile des Codes definieren Sie Spalte cod_ciudad und Sie einen Fremdschlüssel hinzufügen.

Es gibt zwei Kategorien von Integritätsbedingungen: IN-LINE-Integritätsregeln, die direkt nach dem Spaltennamen und Datentyp definiert sind (sie können nur die Spalte "that" beeinflussen) und OUT-OF-LINE-Integritätsregeln Tabelle, nach allen Spalten Definitionen. Constraints, die mehr als eine Spalte umfassen, können nur Out-of-Line-Constraints sein.

Die Einschränkung, die Sie in Ihrem Code definieren, bezieht sich nur auf eine Spalte und darüber hinaus auf cod_ciudad. Sie haben zwischen der Spaltendefinition (Name und Datentyp) kein Komma hinzugefügt. das ist die korrekte Syntax für IN-LINE-Constraints. Eine IN-LINE-Fremdschlüsseleinschränkung benötigt jedoch nicht die Schlüsselwörter FOREIGN KEY und sie müssen den Spaltennamen nicht in Klammern wiederholen. Die Einschränkung, die IN-LINE ist, kann sich nur auf die Spalte "aktuell" beziehen. Also: Eine Möglichkeit, Ihren Code zu reparieren, ist FOREIGN KEY (COD_CIUDAD) aus dem Code zu entfernen.

Eine andere Möglichkeit, es zu beheben, besteht darin, die Abhängigkeit in eine OUT-OF-LINE-Abhängigkeit zu setzen. Dann ist die Syntax korrekt, aber Sie müssen ein Komma (,) vor dem Schlüsselwort CONSTRAINT hinzufügen.

0

Dieses Versuchen:

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

müssen Sie die Einschränkung aus der Spalte Erklärung trennen

Sie einfach den folgenden Befehl

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) 
); 
Verwandte Themen