У меня были проблемы с этим на некоторое время, у меня разные роли персонала в разных таблицах, все они должны быть назначены в офис, но не для меня. найти ответ, любая помощь будет оценена по достоинству. Ниже приведен пример кода и ERD того, что им пытаются достичь4 PK's как FK's в 1 столбец в Oracle
CREATE TABLE office ( --7
office_id Number(4)NOT NULL PRIMARY KEY,
address address,
CREATE TABLE office_staff ( --8
staff_id Number(4)NOT NULL PRIMARY KEY,
office_id Number(4),
manager char(1),
CONSTRAINT manager_boolean CHECK (manager IN ('1','0')));
CREATE TABLE staff_role (
staff_role_id NUMBER(4) PRIMARY KEY,
staff_id tinyint references office_staff(staff_id),
unique(staff_role_id, staff_id),
role_name varchar2(20));
CREATE TABLE manager ( --1
manager_id Number(4)NOT NULL PRIMARY KEY,
staff_role_id as cast(1 as tinyint) persisted,
foreign key (manager_id, staff_id) references staff_role(staff_role_id, staff_id)
manager_firstname varchar2(20),
manager_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11));
CREATE TABLE senior_instructor ( --2
senior_instructor_id Number(4)NOT NULL,
staff_role_id as cast(2 as tinyint) persisted,
foreign key (senior_instructor_id, staff_id) references staff_role(staff_role_id, staff_id)
s_instructor_firstname varchar2(20),
s_instructor_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11));
CREATE TABLE office_admin ( --3
admin_id Number(4)NOT NULL,
staff_role_id as cast(3 as tinyint) persisted,
foreign key (admin_id, staff_id) references staff_role(staff_role_id, staff_id)
admin_firstname varchar2(20),
admin_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11));
CREATE TABLE instructor ( --6
instructor_id Number(4)NOT NULL,
staff_role_id as cast(4 as tinyint) persisted,
foreign key (instructor_id, staff_id) references staff_role(staff_role_id, staff_id)
instructor_firstname varchar2(20),
instructor_lastname varchar2(20),
gender varchar2(1),
date_of_birth date,
telephone varchar2(11),
car_id Number(4));
Выходной ток чтения Datatype не поддерживается
Я не уверен, что выше, но точно это не так. Oracle SQL. Итак, какие RDBMS вы используете? – arturro
Я использую Oracle 10g –
Итак, это не синтаксис Oracle. В Oracle нет tinyint (имеется в MS SqlServer), это: staff_role_id как cast (1 as tinyint) сохраняется, не является правильным синтаксисом для oracle, unique (staff_role_id, staff_id) также неверен - в oracle это должно быть: CONSTRAINT constraint_name UNIQUE (uc_col1, uc_col2, ... uc_col_n). Вам нужно многое исправить. – arturro