2016-05-12 14 views
0
SQL> CREATE TABLE CUSTOMER(
2 CNUM VARCHAR(25) NOT NULL, 
3 CNAME VARCHAR(75) NOT NULL, 
4 CTYPE VARCHAR(20) NOT NULL, 
5 PRIMARY KEY(CNUM), 
6 CONSTRAINT CHECK (CTYPE IN('INDIVIDUAL', 'INSTITUTION')); 
CONSTRAINT CHECK (CTYPE IN('INDIVIDUAL', 'INSTITUTION')) 
                * 
ERROR at line 6: 
ORA-02438: Column check constraint cannot reference other columns 

Hallo, kann jemand dabei helfen? Ich referenziere keine anderen Spalten, aber ich erhalte eine Fehlermeldung, die besagt, dass ich auf andere Spalten referenziere.Spalte überprüfen Einschränkung Integritätsproblem

+0

bitte ein Tag für RDBMS used – Alex

+3

Oracle Einschränkungen Namen benötigen Sie? Ich würde versuchen, es zu ändern: 'CONSTRAINT chk_ctype CHECK (CTYPE IN ('INDIVIDUAL', 'INSTITUTION')));' Ich musste dort noch eine weitere rechte Klammer hinzufügen, aber dann lief es in SQLFiddle in Ordnung. –

+0

@TomH Danke bro das war die Antwort –

Antwort

4

Ich würde versuchen, es zu ändern:

CONSTRAINT chk_ctype CHECK (CTYPE IN ('INDIVIDUAL', 'INSTITUTION'))); 

musste ich auch dort wieder rechts Klammern hinzufügen, aber dann lief es ok in SQLFiddle.

2

Einschränkungen in Oracle erfordern keinen Namen.

Eher verwenden Sie das Schlüsselwort "CONSTRAINT", aber in diesem Fall müssen Sie einen Namen angeben ODER Sie verwenden nicht das Schlüsselwort "CONSTRAINT". Die folgende Syntax für Ihre letzte Zeile funktioniert einwandfrei. (Beachten Sie, dass, nachdem Sie diese Änderung vornehmen, werden Sie immer noch die Fehlermeldung über die fehlende rechte Klammer entsprechend der Tabellendefinition erhalten, als Tom H bemerkt hat.)

CHECK (CTYPE IN('INDIVIDUAL', 'INSTITUTION')); 

Das heißt, wenn Sie nicht wollen, Oder geben Sie der Einschränkung einen Namen, LÖSCHEN Sie einfach das Wort "CONSTRAINT" aus dieser Zeile.

http://docs.oracle.com/cd/B19306_01/server.102/b14200/clauses002.htm#CJAGIICD

Verwandte Themen