首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多租户:如何删除租户?

多租户:如何删除租户?
EN

Stack Overflow用户
提问于 2012-01-09 00:39:20
回答 3查看 1K关注 0票数 1

我有一个具有共享多租户的系统,这意味着每个表都包含所有租户的数据,并有一个TenantId列来区分它们。

提供一个新的租户是快速而简单的,但是现在我面临着删除单个租户的挑战。

考虑到实体之间的一致性相互依赖,当系统被其他租户使用时,如何轻松地从数据库中删除租户?

系统使用SQL Server2008 R2,如果这有帮助的话。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-09 01:00:36

如果我没弄错的话--这是使用带有ON CASCADE选项的FOREIGN KEYS的典型案例。您只需从主租户表中删除一条记录,由于适当的FKeys链,系统会删除相关记录或使用NULLDEFAULT值更新引用列

在表引用自身带有DELETE ON CASCADE的情况下,有时不起作用

票数 1
EN

Stack Overflow用户

发布于 2012-01-09 10:09:19

正如奥列格所指出的,使用ON CASCADE选项的FK应该会有所帮助。但由于您还没有向我们展示模式,我不太确定是否存在系统抛出错误的可能性,即“引入外键约束导致循环或多个级联路径”。如果您看到此错误,则可能是instead of CASCADE DELETE添加一个INSTEAD OF DELETE触发器来执行该工作。

代码语言:javascript
复制
CREATE TRIGGER dbo.Tenants_Delete 
ON dbo.Tenants
INSTEAD OF DELETE
AS
BEGIN;
    --Delete from the Child and Master table as per your need here.
    --Make use of the magic table DELETED
END;
票数 1
EN

Stack Overflow用户

发布于 2012-10-18 21:56:20

这里有另一种方法:如果删除租户引起了太多的麻烦,您也许可以使用一种变通方法。

只需向租户表添加一个布尔列active。然后引入一个仅选择活动租户的视图。调整存储过程以在此视图中查找数据,而不是在原始租户表中查找数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8779229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档