Ale*_*ube 4 sql t-sql sql-server
我有一个名为Users的表(例如),它有3列(Id、Name和IsDeleted),IsDeleted表示用户被删除,还是不被删除?
当我运行下面的 select 语句(select * from users)时,是否可以自动过滤掉 IsDeleted 等于 1 的记录?我有一个仅设计为软删除的数据库,因此有很多带有此 IsDeleted 列的表。当查询数据库时,我们必须添加where子句来过滤掉这些记录,这非常烦人,尤其是在查询/连接多个表时。我想在这里问,是否有一些功能(如默认过滤器?)可以做到这一点。因此,只有在禁用表默认过滤器的情况下,才能查询已删除的记录。
实现这一目标的一种干净且易于理解的方法是使用视图。您可以创建一个视图,通过此标志过滤掉用户并返回所有列。
CREATE VIEW v_Users AS
SELECT * FROM Users WHERE IsDeleted = 0
Run Code Online (Sandbox Code Playgroud)
然后,在所有查询中,您可以使用此视图而不是表。
SELECT u.email, u.name, likes.*
FROM v_Users AS u
INNER JOIN likes ON likes.user_id = u.id
Run Code Online (Sandbox Code Playgroud)
完整的示例小提琴: http: //rextester.com/QDN58706
| 归档时间: |
|
| 查看次数: |
1407 次 |
| 最近记录: |