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

0 ответов

Другие вопросы по тегам