powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хитрое ограничение
3 сообщений из 3, страница 1 из 1
Хитрое ограничение
    #37603691
sergq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.

Возможно ли такое ограничение создать?

Есть таблица

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TABLE Q (
    C          INTEGER NOT NULL,
    PEOPLE_ID  INTEGER,
    FLAG       INTEGER,
    FROM_DATE  DATE
);


ALTER TABLE Q ADD CONSTRAINT PK_Q PRIMARY KEY (C);

INSERT INTO Q (C, PEOPLE_ID, FLAG, FROM_DATE)  VALUES (1, 1, 10, '2010-01-01 00:00:00');
INSERT INTO Q (C, PEOPLE_ID, FLAG, FROM_DATE) VALUES (2, 1, 20, '2011-01-01 00:00:00');

COMMIT WORK;


COMMIT WORK;



т.е. значение некого атрибута для человека на определенную дату.


есть две другие таблицы

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
CREATE TABLE Q1 (
    C         INTEGER NOT NULL,
    DOC_DATE  DATE,
    FLAG      SMALLINT
);


ALTER TABLE Q1 ADD CONSTRAINT PK_Q1 PRIMARY KEY (C);

INSERT INTO Q1 (C, DOC_DATE, FLAG)  VALUES (1, '2010-10-10 00:00:00', 1);

COMMIT WORK;

CREATE TABLE Q2 (
    C      INTEGER,
    Q1_ID  INTEGER,
    Q_ID   INTEGER
);


ALTER TABLE Q2 ADD CONSTRAINT FK_Q2_1 FOREIGN KEY (Q1_ID) REFERENCES Q1 (C);
ALTER TABLE Q2 ADD CONSTRAINT FK_Q2_2 FOREIGN KEY (Q_ID) REFERENCES Q (C);

INSERT INTO Q2 (C, Q1_ID, Q_ID)  VALUES (1, 1, 1);

COMMIT WORK;




Необходимо исключить возможность вставки в таблицу Q2 записи с Q_id равной 2, если дата в Q1 не в диапазоне 01.01.10 до 01.01.11.
Если дата Q1 больше чем 01.01.11, то соответственно Q2.q_id может равняться только 2.

т.е. Q2.Q должно всегда ссылаться только на записи из Q , удовлетворяющих условию first 1 Q1.flag = Q.flag and Q.from_date <= Q1.doc_date . т.е. на ближайшую актуальную из таблицы Q
...
Рейтинг: 0 / 0
Хитрое ограничение
    #37603707
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergq Возможно ли такое ограничение создать?Выйти за пределы вставляемой записи. Только триггером.
...
Рейтинг: 0 / 0
Хитрое ограничение
    #37603716
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257sergq Возможно ли такое ограничение создать?Выйти за пределы вставляемой записи. Только триггером. или "довести" нужные данные до нужной таблицы - может выглядеть как дублирование или денормализация, но на практике тоже может быть эффективно...
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хитрое ограничение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]