Вам не нужно set identity_insert on
, если вы не пытаетесь вставить значения в столбец идентификаторов.Кроме того, ваш текущий оператор вставки, если вы потеряете set identity_insert
, будет просто внутри одной пустой строки для любого оператора вставки, успешно выполненного в таблице FridgeTemperture
.
При использовании триггеров у вас есть доступ к записям, на которые влияютоператор, который запускает триггер через автоматически сгенерированные таблицы с именами inserted
и deleted
.
Я думаю, что вы ищете что-то вроде этого:
CREATE TRIGGER [dbo].[FridgeTemperature_INSERT]
ON [dbo].[FridgeTemperture]
AFTER INSERT
AS
BEGIN
INSERT INTO MpSensors(fridge_temp)
SELECT CAST(Fridgetemp as varchar(10))
FROM inserted
END
Хотя я не вижу ничегопреимущество сохранения одного и того же значения в двух разных местах и в двух разных типах данных.
Обновление
После нашего разговора в комментариях вы можете просто использовать обновлениеоператор в триггере вместо оператора вставки:
UPDATE MpSensors
SET fridge_temp = (
SELECT TOP 1 CAST(Fridgetemp as varchar(10))
FROM inserted
ORDER BY Id DESC
)
Это должно дать вам последнюю запись в случае, если у вас есть оператор вставки, который вставляет более одной записи в таблицу FridgeTemperture
в одном выражении.