можно сделать сабж? т.е. есть 2 таблицы, у каждой есть текстовое поле. Нужно
посадить уникальный индекс на оба поля в разных таблицах одновременно
(надеюсь внятно выразился).
Оракл 9.2.
Вообще нужна уникальность, поэтому не обязательно индекс.
With best regards, Andrey Borodulin. E-mail: zu...@land.ru
Andrey Borodulin пишет:
AB> Hello, All!
AB> можно сделать сабж? т.е. есть 2 таблицы, у каждой есть текстовое
поле. Нужно
AB> посадить уникальный индекс на оба поля в разных таблицах
одновременно
AB> (надеюсь внятно выразился).
AB> Оракл 9.2.
AB> Вообще нужна уникальность, поэтому не обязательно индекс.
Думаю что только триггерами...
--
Zhirenkov Vitaly
Oracle9i PL/SQL Developer Certified Associate
Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
может сделать две партиции в одной таблице
и views
KA> а зачем?
KA> какая цель - производительность, разделение прав?
при проектировании базы не учёл один маленький факт... хочется обойтись
малой кровью.
KA> может сделать две партиции в одной таблице и views
хороший вариант, спасибо!
1. Раз необязательно индекс... только непонятно про ограничения UNIQUE для
каждой из таблиц.
DROP TABLE a;
DROP TABLE b;
CREATE TABLE a (v VARCHAR2(10) UNIQUE NOT NULL);
CREATE TABLE b (v VARCHAR2(10) UNIQUE NOT NULL);
CREATE MATERIALIZED VIEW LOG ON a WITH ROWID, SEQUENCE (v) INCLUDING NEW VALUES;
CREATE MATERIALIZED VIEW LOG ON b WITH ROWID, SEQUENCE (v) INCLUDING NEW VALUES;
DROP MATERIALIZED VIEW mv_ab;
CREATE MATERIALIZED VIEW mv_ab
REFRESH FAST ON COMMIT
AS
SELECT a.v, COUNT(a.v) cnt, COUNT(*)
FROM a, b
WHERE a.v = b.v
GROUP BY a.v
/
ALTER TABLE mv_ab ADD CONSTRAINT c$mv_ab CHECK (v IS NULL);
INSERT INTO a VALUES('test');
INSERT INTO b VALUES('test');
COMMIT;
INSERT INTO a VALUES('vbegun');
INSERT INTO b VALUES('aborodulin');
UPDATE a SET v = 'aborodulin';
COMMIT;
Ограничение будет a-la отложенным.
2. Partitions/views/либо полная спецификация имени партиции при выборке.
3. Triggers
4. Изменения дизайна
Каждый из способов лучше измерить под-нагрузкой, partitions выглядят
самым простым решением, но нужет global unique index -- а тут уже нужно
думать о maintenance.
--
Vladimir Begun
The statements and opinions expressed here are my own and
do not necessarily represent those of Oracle Corporation.
--
Если я прально понял, то кластер спасет отца русской демократии.
> Вообще нужна уникальность, поэтому не обязательно индекс.
Одно без другого не бывает.
>
> With best regards, Andrey Borodulin. E-mail: zu...@land.ru
>
>
--
With best regards, Eugene Filippenkov.
E-mail : my_trashbox AT ukrpost.net
ORA-01715
--
Vladimir Begun
The statements and opinions expressed here are my own and
do not necessarily represent those of Oracle Corporation.
VB> 1. Раз необязательно индекс... только непонятно про ограничения
VB> UNIQUE для каждой из таблиц.
VB> DROP TABLE a;
VB> DROP TABLE b;
[Sorry, skipped]
VB> Ограничение будет a-la отложенным.
красиво..., никогда бы не догадался использовать snapshot'ы ;)
[Sorry, skipped]
спасибо за ответ! вопросов больше нет
Т.е. только если егойные(вопрошавшего) поля можно будет назначить первичным
ключем ?
Вопрошавший, у тебя там null-ы возможны ? Можно эти поля сделать первичнвм
ключем ? Кластер, должет быть тогда простым и элегантным решением.
> --
> Vladimir Begun
> The statements and opinions expressed here are my own and
> do not necessarily represent those of Oracle Corporation.
>
>
> Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru
Oracle9i Database Concepts Release 2 (9.2)
10 Schema Objects
Clusters
"Each cluster key value is stored only once each in the cluster and
the cluster index, no matter how many rows of different tables contain
the value."
DROP TABLE a;
DROP TABLE b;
DROP CLUSTER c_join;
CREATE CLUSTER c_join (v VARCHAR2(10));
CREATE INDEX idx$c_join ON CLUSTER c_join;
CREATE TABLE a (v VARCHAR2(10) CONSTRAINT a$pk PRIMARY KEY) CLUSTER c_join(v);
CREATE TABLE b (v VARCHAR2(10) CONSTRAINT b$pk PRIMARY KEY) CLUSTER c_join(v);
INSERT INTO a VALUES('vbegun');
INSERT INTO b VALUES('vbegun');
COMMIT;
INSERT INTO a VALUES('vbegun');
INSERT INTO b VALUES('vbegun');
EF> Т.е. только если егойные(вопрошавшего) поля можно будет назначить
EF> первичным ключем ? Вопрошавший, у тебя там null-ы возможны ?
null-ы не возможны
EF> Можно эти поля сделать первичнвм ключем ?
первичным ключем - нет.