У меня есть две таблицы, foo
и bar
, которые связаны друг с другом отношением "один ко многим":
CREATE TABLE foo (
id NUMBER PRIMARY KEY
);
CREATE TABLE bar (
id NUMBER PRIMARY KEY,
foo NUMBER NOT NULL,
CONSTRAINT fk_bar_foo FOREIGN KEY (foo) REFERENCES foo (id)
);
Теперь я хочу создать представление с LEFT JOIN
между двумя таблицами, где каждая строка в представлении имеет уникальный id
, поэтому я попробовал это:
CREATE OR REPLACE my_view AS
SELECT ORA_HASH(foo.id || '~' || bar.id) id
FROM foo
LEFT JOIN bar ON bar.foo = foo.id
Моя проблема в том, что столбец id
представления становится нулевым, хотя он никогда не может иметь значение NULL
. Чтобы это работало с другим приложением, мне нужно иметь уникальный ненулевой идентификатор в представлении.
Могу ли я как-то обмануть Oracle, чтобы сделать столбец необнуляемым? Или есть другой способ создать уникальный идентификатор, который не может быть нулевым?