北京总部

每个程序员都需要了解的一个SQL技巧

作者: 来源: 时间: 2016-12-14 17:03:20

 对于数据过滤而言CHECK约束已经算是相当不错了。然而它仍存在一些缺陷,比如说它们是应用到表上面的,但有的时候你可能希望指定一条约束,而它只在特定条件下才生效。使用SQL标准的WITH CHECK OPTION子句就能完成这点,至少Oracle和SQL Server都实现了这个功能。下面是实现方式:

      CREATE TABLE books (

          id      NUMBER(10)              NOT NULL,

          title     VARCHAR2(100 CHAR)     NOT NULL,

          price    NUMBER(10, 2)            NOT NULL,

 

        CONSTRAINT pk_book PRIMARY KEY (id)

 );

/

CREATE VIEW expensive_books

AS

SELECT id, title, price

FROM books

WHERE price > 100 WITH CHECK OPTION;

 /

INSERT INTO books

VALUES (1, '1984', 35.90);

 

INSERT INTO books

VALUES(

     2,

    'The Answer to Life, the Universe, and Everything',

     999.90

);

      正如你看到的那样,expensive_books 是那些价格大于100块的书。这个视图只会返回第二本书:

      SELECT * FROM expensive_books;

      上述查询的输出是:

       ID   TITLE                                    PRICE

--   --------------------------------------------   -------

       2    The Answer to Life, the Universe, and ...    999.9

      不过由于我们使用了CHECK OPTION,我们还能防止用户往”昂贵的书籍”中插入那些廉价的。比如说,我们运行下这个查询:

       INSERT INTO expensive_books VALUES (

       3,

       '10 Reasons why jOOQ is Awesome',

       9.99

);

更多信息知识库内容请点击:信息知识库

相关阅读

更多

中软卓越java培训地址:北京市海淀区科学院南路2号融科资讯中心C座北楼12层 联系电话:400-666-3775 邮箱账号:etc-marketing@chinasofti.com

©2008-2016 北京中软国际教育科技股份有限公司 京ICP备14058756号-2