Хорошо, спасибо за ваши ответы и предложения.
Я работаю с проектом доступа, подключенным к базе данных MsSQL. Я пытался решить эту проблему с помощью триггера таблицы, но ни одно из предложений не помогло мне. Поэтому я решил решить эту проблему на стороне клиента с помощью кода VBA.
Вероятно, это неправильный способ ее решения, но это может быть полезно знать всем, кто читает.
Структура таблицы та же, но я создал соответствующую форму для таблицы продуктов и регионов. На формах событий AfterInsert у меня есть следующий код:
Таблица регионов:
Private Sub Form_AfterInsert()
Dim varRegion As String
Dim strSQL As String
varRegion = Me![code]
strSQL = "INSERT INTO master([region], [product]) SELECT '" & varRegion & "', & _
[code] FROM product;"
DoCmd.RunSQL strSQL
End Sub
Таблица продукции:
Private Sub Form_AfterInsert()
Dim varProduct As String
Dim strSQL As String
varProduct = Me![code]
strSQL = "INSERT INTO master([region], [product]) SELECT [code], & _
'" & varProduct & "' FROM region;"
DoCmd.RunSQL strSQL
End Sub
РЕДАКТИРОВАТЬ: Изучив этот вопрос немного подробнее, я обнаружил, что это код, который вам нужно использовать для триггера, если вы используете SQL Server, если вы не хотите использовать настройка на стороне клиента.
По-видимому, в SQL Server вам нужно ссылаться на скрытую таблицу с именем "вставлено", когда вы хотите получить значения вставленной строки. Для получения дополнительной информации перейдите по этой ссылке: Многострочные соображения для триггеров DML
Отлично!
Таблица продукции:
-- Trigger statement
CREATE TRIGGER "name-of-trigger"
ON producttable
FOR INSERT AS
-- Insert statement
INSERT INTO mastertable ([region],[product])
SELECT regiontable.[code], inserted.[code]
FROM regiontable, inserted;
Таблица регионов:
-- Trigger statement
CREATE TRIGGER "name-of-trigger"
ON regiontable
FOR INSERT AS
-- Insert statement
INSERT INTO mastertable ([product],[region])
SELECT producttable.[code], inserted.[code]
FROM producttable, inserted;