declare @dt datetime
set @dt = getdate()
select convert(char(10),@dt,120)
я зафиксировал длину данных char(10)
, поскольку Вы хотите определенный формат строки.
Вам нужно обновить целевую таблицу, а не логическую таблицу. Однако вы присоединяетесь к логической таблице, чтобы выяснить, какие строки следует обновить:
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
Вы можете изменить триггер на 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 НЕ вызывают рекурсию.