Это должно быть i < results.length
, потому что с <=
вы сравниваете дополнительное несуществующее значение.
results = [{
"name": "FantasticBeasts",
"count": 546809,
},
{
"name": "SSIPOS",
"count": 16257,
},
{
"name": "xyz",
"count": 16257,
}
]
for (var i = 0; i < results.length; i++) {
console.log('result ==>', results[i]);
}
Используйте INSTEAD OF DELETE
(см. MSDN), инициируйте и решите в триггере, что Вы действительно хотите сделать.
Решение, используемое Вместо, Удаляет триггер. Откат tran остановил удаление. Я боялся, что у меня будет каскадная проблема, когда я сделал удаление, но что did'nt, кажется, происходят. Возможно, триггер не может инициировать себя. Во всяком случае, спасибо все для Вашей справки.
ALTER TRIGGER [dbo].[tr_ValidateDeleteForAssignedCalls]
on [dbo].[CAL]
INSTEAD OF DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @RecType VARCHAR(1)
DECLARE @UserID VARCHAR(8)
DECLARE @CreateBy VARCHAR(8)
DECLARE @RecID VARCHAR(20)
SELECT @RecType =(SELECT RecType FROM DELETED)
SELECT @UserID =(SELECT UserID FROM DELETED)
SELECT @CreateBy =(SELECT CreateBy FROM DELETED)
SELECT @RecID =(SELECT RecID FROM DELETED)
-- Check to see if the type is a Call and the item was created by a different user
IF @RECTYPE = 'C' and not (@USERID=@CREATEBY)
BEGIN
RAISERROR ('Cannot delete call.', 16, 1)
ROLLBACK TRAN
RETURN
END
-- Go ahead and do the update or some other business rules here
ELSE
Delete from CAL where RecID = @RecID
END
Триггер может откатывать текущую транзакцию, которая будет иметь эффект отмены удаления. Как плакат выше также состояний, можно также использовать вместо триггера.
Согласно документации MSDN о INSTEAD OF DELETE
триггеры:
Удаленная таблица, отправленная в УДАЛИТЬ триггер, содержит изображение строк, поскольку они существовали, прежде чем Оператор удаления был выпущен.
Если я понимаю это правильно, УДАЛЕНИЕ на самом деле выполняется. Что я пропускаю?
Так или иначе я не понимаю, почему Вы хотите удалить записи и если бизнес-правила не передаются, затем восстанавливают те записи после удаления. Я имел бы, клянутся, что должно быть легче протестировать при передаче бизнес-правил прежде, чем удалить записи.
И я сказал бы, используют транзакцию, я не услышал прежде о INSTEAD OF
триггеры.