Вы смешиваете синтаксис для встроенных и внеполосных ограничений .
Вы можете удалить часть FOREIGN KEY
встроенных ограничений:
CREATE TABLE SYSTEM_USER_LAB
( SYSTEM_USER_LAB_ID int PRIMARY KEY
, SYSTEM_USER_NAME varchar2(10) NOT NULL
, SYSTEM_USER_GROUP_ID int REFERENCES COMMON_LOOKUP_LAB(COMMON_LOOKUP_ID)
, SYSTEM_USER_TYPE int REFERENCES COMMON_LOOKUP_LAB(COMMON_LOOKUP_LAB_ID)
, FIRST_NAME varchar2(10)
, MIDDLE_NAME varchar2(10)
, LAST_NAME varchar2(10)
, CREATED_BY int REFERENCES SYSTEM_USER_LAB(SYSTEM_USER_LAB_ID)
, CREATION_DATE DATE NOT NULL
, LAST_UPDATED_BY int REFERENCES SYSTEM_USER_LAB(SYSTEM_USER_LAB_ID)
, LAST_UPDATE_DATE DATE NOT NULL);
или переключитесь на внеплановые ограничения:
CREATE TABLE SYSTEM_USER_LAB
( SYSTEM_USER_LAB_ID int PRIMARY KEY
, SYSTEM_USER_NAME varchar2(10) NOT NULL
, SYSTEM_USER_GROUP_ID int
, SYSTEM_USER_TYPE int
, FIRST_NAME varchar2(10)
, MIDDLE_NAME varchar2(10)
, LAST_NAME varchar2(10)
, CREATED_BY int
, CREATION_DATE DATE NOT NULL
, LAST_UPDATED_BY int
, LAST_UPDATE_DATE DATE NOT NULL
, CONSTRAINT FK_1 FOREIGN KEY (SYSTEM_USER_GROUP_ID)
REFERENCES COMMON_LOOKUP_LAB(COMMON_LOOKUP_ID)
, CONSTRAINT FK_2 FOREIGN KEY (SYSTEM_USER_TYPE)
REFERENCES COMMON_LOOKUP_LAB(COMMON_LOOKUP_LAB_ID)
, CONSTRAINT FK_3 FOREIGN KEY (CREATED_BY)
REFERENCES SYSTEM_USER_LAB(SYSTEM_USER_LAB_ID)
, CONSTRAINT FK_4 FOREIGN KEY (LAST_UPDATED_BY)
REFERENCES SYSTEM_USER_LAB(SYSTEM_USER_LAB_ID)
);
Очевидно, выбирайте более подходящие имена для этих ограничений, чем у меня, и для обеих версий убедитесь, что они ссылаются на нужные вещи в родительском.таблиц.
Я также изменил string
на varchar2(10)
, поскольку первый не является действительным типом данных .Опять же, убедитесь, что это действительно разумные размеры, я выбрал 10
наугад.И int
не является встроенным типом данных, но это поддерживаемый тип ANSI SQL , так что все в порядке, но, возможно, немного необычно.