У меня проблема с внедрением БД. У меня есть 2 таблицы:Oracle SQL, условный внешний ключ
CREATE TABLE TAB1
(
TAB1_ID INT NOT NULL PRIMARY KEY,
TAB1_BOOL VARCHAR(4) NOT NULL CHECK (TAB1_BOOL IN('OPT1', 'OPT2'))
);
CREATE TABLE TAB2
(
TAB2_ID INT NOT NULL
);
Я хотел бы сделать TAB2_ID в качестве внешнего ключа TAB1_ID, но TAB2_ID может быть только эти TAB1_IDs, какие строки в таблице TAB1 выделены TAB1_BOOL == OPT1. Например:
TAB1 contains 2 rows:
1. 'TAB1_ID==1' 'TAB1_BOOL==OPT1',
2. 'TAB1_ID==2' 'TAB1_BOOL==OPT2'.
Now, statement like:
INSERT INTO TAB2 (TAB2_ID) VALUES (2);
should be rejected because row with TAB1_ID==2 is marked with OPT2
Возможно ли это сделать в Oracle SQL?
Вы пытались определить внешний ключ? BTW, какая версия Oracle? – jarlh
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production, у меня нет проблем с определением внешнего ключа. Посмотрите на пример – devPash
Подзапросы в пределах ограничений проверки не разрешены в базе данных оракула, вы можете реализовать триггер для него. – jfun