Я хочу использовать временную таблицу в SQL Server 2016. В настоящее время временные таблицы не позволяют использовать ON DELETE CASCADE. Как я могу реализовать триггер для имитации поведения? Я хотел бы сохранить внешние ключи, потому что я использую навигационные свойства Entity Framework в своем приложении.Как я могу реализовать триггер SQL Server в качестве альтернативы ON DELETE CASCADE?
Я думаю, что после триггера не работает, потому что инструкция delete не работает с условием внешнего ключа.
Предположим, что мы имеем следующую простую ситуацию:
- UserRole.UserId: внешний ключ user.id
- UserRole.RoleId: внешний ключ к Role.Id
Если я удалю роль с Id == 2, я хочу удалить вторую и четвертую строки в UserRole. Как это реализовать без использования DELETE CASCADE во временных таблицах?
Вы слышали о 'Вместо Triggers', Google это. –
Да, но триггеры INSTEAD OF не разрешены ни в текущей, ни в таблице истории, чтобы избежать недействительности логики DML. AFTER триггеры разрешены только в текущей таблице. Они блокируются в таблице истории, чтобы избежать недействительности логики DML. – cSteusloff
Рассмотрите это - если было тривиально реализовать 'ON DELETE CASCADE' с помощью чего-то вроде триггера, почему разработчики Microsoft не реализовали' ON DELETE CASCADE', используя такой механизм, вместо того, чтобы перечислять его как ограничение? Любое обходное решение, которое вы пытаетесь, может привести к аналогичным ограничениям. –