Другой ответ Access 2000+ (Jet 4.0) - создать Jet 4.0 VIEW
(в терминах Access: запрос SELECT
, сохраненный как объект запроса) с INNER JOIN
для IDENTITY
(Autonumber) колонка; объединяющие столбцы должны быть представлены в предложении SELECT и в ссылочной таблице. Затем INSERT INTO
VIEW
предоставляет значения для всех столбцов NOT NULL
, которые не имеют DEFAULT
.
Значение столбца IDENTITY
может быть либо опущено, в этом случае механизм будет автоматически генерировать значение как обычно, либо явное значение будет предоставлено и выполнено; если дополнительно добавлено значение объединяющего столбца в другой таблице (без столбца IDENTITY
), то оно должно совпадать со значением IDENTITY
, иначе произойдет ошибка; если значение IDENTITY
опущено, то любое значение, предоставленное для присоединяемого столбца, будет игнорироваться. Обратите внимание, что между такими таблицами обычно ожидается FOREIGN KEY
, но это не является обязательным условием для работы этого процесса.
Быстрый пример (синтаксис ANSI-92 Query Mode Jet 4.0):
CREATE TABLE Table1
(
key_col INTEGER IDENTITY NOT NULL PRIMARY KEY,
data_col_1 INTEGER NOT NULL
)
;
CREATE TABLE Table2
(
key_col INTEGER NOT NULL,
data_col_2 INTEGER NOT NULL,
PRIMARY KEY (key_col, data_col_2)
)
;
CREATE VIEW View1
AS
SELECT T1.key_col AS key_col_1, T2.key_col AS key_col_2,
T1.data_col_1, T2.data_col_2
FROM Table2 AS T2
INNER JOIN Table1 AS T1
ON T1.key_col = T2.key_col
;
INSERT INTO View1 (data_col_1, data_col_2)
VALUES (1, 2)
;