Mar*_*s L 1 sql t-sql sql-server sql-server-2005
我们有一个数据库,其中联系人只是软删除,即我们将名为deleted的位设置为true.API处理此问题,但有时您需要直接针对数据库运行查询,并且很容易忘记该位,并导出实际删除的联系人.这不是一个大问题,因为我习惯了这个系统,但是如果我正在度假,或者如果其他人要接管我想确保这些行不会被退回 - 除非特别要求.这给我们留下了以下两个问题:
有没有办法告诉SQL Server(在这种情况下为2005)不返回行,例如,如果某个位设置为true?
如果是这样,如果特别要求(如果bit ='true'),仍可以检索这些行吗?
要选择未删除的行或已删除的行,请创建两个视图:
CREATE VIEW ActiveContacts
AS
SELECT (list of fields)
FROM dbo.Contacts
WHERE deleted = 0
CREATE VIEW DeletedContacts
AS
SELECT (list of fields)
FROM dbo.Contacts
WHERE deleted = 1
Run Code Online (Sandbox Code Playgroud)
现在,您可以轻松地从活动或已删除的联系人中选择:
SELECT (list of fields)
FROM ActiveContacts
SELECT (list of fields)
FROM DeletedContacts
Run Code Online (Sandbox Code Playgroud)
这样,您可以轻松地封装该选择条件,如果您未在视图中返回"已删除"标志,则外部用户甚至不会看到该标志,也不会知道它在那里.
渣