我在我的 SQL Server 数据库中的临时表上使用行级安全性。为了遵守 GDPR,我不仅需要能够删除当前表中的这些数据,还要删除它的 _History 表(时态表)。
在RLS之前,我曾经这样做:
ALTER TABLE [dbo].[Table] SET (SYSTEM_VERSIONING = OFF);
DELETE FROM [dbo].[Table_History] WHERE UserID=@userID;
ALTER TABLE [dbo].[Table] SET (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[Table_History]));
但是现在,这会产生错误:
Cannot ALTER 'Table' because it is being referenced by object 'fn_Table_Predicate'.
在启用 RLS 的情况下启用和禁用系统版本控制的正确方法是什么?