T-SQL (триггер): обновить вставленную запись данными из другой вставленной записи?
Можно ли обновить запись в одной таблице из записи, вставленной в другую таблицу, используя триггер?
У меня есть 4 таблицы: Purchase_order, Notes, PO_Address, адрес таблицы
Я хочу обновить таблицу Notes с адресом из таблицы Address.
Если я создам новый Purchase_order с заметками, запись в таблице Notes также будет создана автоматически. Notes имеет внешний ключ от Purchase_order.
Если также в поле Purchase_order указан адрес доставки из таблицы Address, в таблице PO_Address будет создана другая запись с внешними ключами из Purchase_order и Address.
Что я хочу сделать: создать триггер, который может добавить адрес в заметку.
Моя проблема: Попытка присоединиться к PO_Address, но или Buy_order или Note еще не сохранены в БД, поэтому я получаю нулевую ошибку. Msgstr "Невозможно обновить заметку с нуля".
Я пытался создать триггер для большинства различных таблиц, но я не знаю, какая таблица обновляется последней, поэтому она не работает...
Это работает для обновления, но проблема в том, когда создается новый order_order.
Пример кода:
USE [Mydatabase]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create trigger [dbo].[_Note_Address]
on [dbo].[Note]
after insert, update
as
begin
SET NOCOUNT ON;
update Note
set text = text + ---adress here
from address a
join ... ---and so on.
where note_id in (select note_id from inserted)
end
Пример данных:
[Purchase_order]
ID____|TotalAmount
1 |300
2 |900
5 |1200
[Address]
ID____|Street___
10 | One Street 33
20 | 2nd Street 55
30 | Mystreet 10
[Note]
ID___|Text___|FK_PO_Key
5 | '123' |1
12 | 'abc' |5
[PO_Address]
FK_PO_Key | FK_Address_Key
2 | 10
5 | 30