[原创]这个挺有意思的--数据库也玩眼见不一定为实啊!!

这个挺有意思的!呵呵

C:>db2 connect to dw164 user ccp
输入 ccp 的当前密码:

   数据库连接信息

数据库服务器         = DB2/NT 8.2.0
SQL 授权标识         = CCP
本地数据库别名       = DW164


C:> db2 CREATE TABLE db2admin.ztest   
db2 (cont.) =>   (  
db2 (cont.) =>   id1 INT NOT NULL,   
db2 (cont.) =>   id2 CHAR(1) NOT NULL  
db2 (cont.) =>       CONSTRAINT c_ztest_id2  
db2 (cont.) =>       CHECK (id2 IN ('1','2'))  
db2 (cont.) =>       NOT ENFORCED  ENABLE QUERY OPTIMIZATION,  
db2 (cont.) =>   id3 INT NOT NULL,  
db2 (cont.) =>       CONSTRAINT c_ztest_id3  
db2 (cont.) =>       CHECK (id3 BETWEEN 10 AND 50)  
db2 (cont.) =>       NOT ENFORCED  ENABLE QUERY OPTIMIZATION
db2 (cont.) =>   )
DB21034E  该命令被当作 SQL
语句来处理,因为它不是有效的“命令行处理器”命令。在 SQL 处理期间,它返回:
SQL0601N  要创建的对象名与类型为"TABLE" 的现有名称 "DB2ADMIN.ZTEST" 相同。
SQLSTATE=42710

C:>  db2 insert into db2admin.ztest values(1,'1',60),(2,'2',20),(3,'1',3),(4,'2
',34),(5, 'z',77),(6, 'x',140),(7,'1',3),(8,'2',24)
DB20000I  SQL命令成功完成。

C:>  db2 select * from db2admin.ztest

ID1         ID2 ID3
----------- --- -----------
          6 x           140
          6 x           140

          5 z            77
          7 1             3
          5 z            77
          7 1             3
          1 1            60
          2 2            20
          3 1             3
          4 2            34
          8 2            24
          1 1            60
          2 2            20
          3 1             3
          4 2            34
          8 2            24

  16 条记录已选择。


C:>  db2 select * from db2admin.ztest where id2 ='x'

ID1         ID2 ID3
----------- --- -----------

  0 条记录已选择。


C:>  db2 alter table db2admin.ztest alter check c_ztest_id2 disable query optim
ization

DB20000I  SQL命令成功完成。

C:>  db2 select * from db2admin.ztest where id2 ='x'

ID1         ID2 ID3
----------- --- -----------
          6 x           140
          6 x           140


  2 条记录已选择。


C:>db2 terminate
DB20000I  TERMINATE命令成功完成。

C:>
 
结论:
NOT ENFORCED,它建议 DB2 在插入或更新数据时不强制检查本列!也就是说插入数据的时候没有强行限制!

ENABLE QUERY OPTIMIZATION,DB2 在对该表运行 SELECT 语句时使用它!
也就是说在select的时候数据库会根据check的值来进行sql的OPTIMIZATION,因为check中没有'x',所以直接返回0条记录!
 
这个不错!
 
看来有时候眼见还真不一定为实啊!!!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/694276/viewspace-426835/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/694276/viewspace-426835/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值