【问题标题】:How to restrict query for oracle with specific conditions如何在特定条件下限制对 oracle 的查询
【发布时间】:2015-05-05 20:16:10
【问题描述】:

我想知道是否有办法在表上指定条件,我的意思是我需要在某些条件(例如状态)下限制查询,这样我就不必在所有选择查询中重写状态条件我的应用程序中已经有。

谢谢

【问题讨论】:

  • 您想约束表的内容以满足某个条件,还是在寻找编写查询的捷径?
  • 是的,我想避免我编写的每个 sql 查询都必须具有的编码条件,我知道 DBMSII 上的此功能,但我不知道如何为 oracle 表实现此功能
  • Oracle 虚拟私有数据库可能是解决方案,具体取决于您为什么要这样做。这可能与我的回答 here 重复。
  • 嗯,第一选择不是我要找的,第二选择更多的是我想要的,也是我考虑过的,但我想发表这么多观点太麻烦了,所以这就是为什么我正在寻找一种方法,一旦记录更改为特定条件,它就无法被任何其他查询检索到。我希望我现在能更好地理解这个想法。

标签: sql oracle select plsql


【解决方案1】:

您有两个主要选择:

  1. 您可以将约束应用于强制执行相关条件的基表。这限制了可以驻留在表中的数据,但是如果您确实从不想要执行不包含给定条件的查询,那么在您的表中存储任何失败的数据都是没有意义的满足条件。

  2. 您可以在数据库中创建视图,根据相关条件过滤基表,并根据这些视图编写查询。这不会限制基表的内容,但它提供了编写查询的快捷方式。

我在 cmets 中问过你(不那么冗长)你想要什么,你说“是”。因此,我将介绍这两种选择的一些细节。

在 Oracle 中,创建表约束的语法遵循以下模式:

ALTER TABLE my_table ADD CONSTRAINT [optional_constraint_name]
    CHECK (<condition(s)>);

在 Oracle 中,创建您可能想要的视图的语法遵循以下模式:

CREATE VIEW my_view AS SELECT * FROM my_table WHERE <conditions>;

选择满足您需求的任何方法,并查阅文档以获取有关相应声明的完整详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 2011-03-25
    相关资源
    最近更新 更多