相关疑难解决方法(0)

当我想使用数据库约束但只标记为已删除而不是删除时该怎么办?

我正在一个项目中工作,其中数据库项目未被删除,但仅标记为已删除.像这样的东西:

id   name     deleted
---  -------  --------
1    Thingy1  0
2    Thingy2  0
3    Thingy3  0
Run Code Online (Sandbox Code Playgroud)

我希望能够在name列上定义类似UNIQUE约束的内容.看起来很简单吧?

让我们假设一个场景,其中"Thingy3"被删除,并创建一个新的(可能在几年后).我们得到:

id   name     deleted
---  -------  --------
1    Thingy1  0
2    Thingy2  0
3    Thingy3  1
...
100  Thingy3  0
Run Code Online (Sandbox Code Playgroud)

从用户的角度来看,他删除了一个项目并创建了一个新项目.就像删除文件和创建新文件一样.因此,对他来说很明显,新项目与连接到旧项目的任何数据无关且未附加.

这已经处理完了,因为DB只关心它id,并且由于新项目的数量id为100而不是3,它们完全不同.

当我想阻止用户创建另一个 "Thingy3"项时,我的困难就出现了.如果我有一个UNIQUE约束只查看未标记的项目deleted,那么我会解决一个问题.

(当然,那时我必须处理当有人撤消删除时会发生什么......)

那么,我该如何定义那种约束呢?

sql t-sql sql-server-2005 constraints

6
推荐指数
1
解决办法
1076
查看次数

标签 统计

constraints ×1

sql ×1

sql-server-2005 ×1

t-sql ×1