每个程序员都需要了解的一个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