SQL Вставляет триггер для обновления ВСТАВЛЕННЫХ табличных значений

declare @dt datetime

set @dt = getdate()

select convert(char(10),@dt,120) 

я зафиксировал длину данных char(10), поскольку Вы хотите определенный формат строки.

27
задан Shimmy 3 December 2009 в 03:36
поделиться

2 ответа

Вам нужно обновить целевую таблицу, а не логическую таблицу. Однако вы присоединяетесь к логической таблице, чтобы выяснить, какие строки следует обновить:

UPDATE YourTable
SET TheColumnToBeUpdated = 
    (
    SELECT TheValueCol FROM AnotherTable.ValueCol
    WHERE AnotherTable.ValudCol1 = INSERTED.ValueCol1
    )
FROM YourTable Y
JOIN Inserted I ON Y.Key = I.Key
WHERE I.ValueCol IS NULL
45
ответ дан 28 November 2019 в 04:40
поделиться

Вы можете изменить триггер на INSTEAD OF INSERT. Это позволит вам проверить входящие значения и, при необходимости, заменить их значениями из другой таблицы.

CREATE TRIGGER CoolTrigger 
ON MyAwesomeTable 
INSTEAD OF INSERT
AS 
BEGIN  

INSERT MyAwesomeTable (TheValueCol)
SELECT ISNULL(INSERTED.TheValueCol, AnotherTable.TheValueCol) AS TheValueCol
FROM INSERTED
JOIN AnotherTable ON INSERTED.ValueCol1 = AnotherTable.ValueCol1

END

ПРИМЕЧАНИЕ: триггеры INSTEAD OF НЕ вызывают рекурсию.

20
ответ дан 28 November 2019 в 04:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: