我是靠谱客的博主 奋斗狗,最近开发中收集的这篇文章主要介绍DB2 INTEGRITY 完整性检查,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

    当表中设置了约束时,使用 import 导入数据后,数据可以正常访问。但是若使用 load 装载数据,表会处于"设置完整性暂挂"状态,无法查询表中数据,使用 SET INTEGRITY 语句可以使表脱离 "设置完整性暂挂"状态。

如下举例

1、首先,创建约束表


CREATE TABLE AAA (
A_1 VARCHAR(100),
A_2 VARCHAR(100),
A_3 int
);
alter table aaa
add constraint chk_a3 check(a_3 <=10) ENFORCED ENABLE QUERY OPTIMIZATION
;
reorg table a.aaa;
runstats on table a.aaa and indexes all;

注:在增加约束时,增加了两个选项。

第一个选项是 NOT ENFORCED,它建议 DB2 在插入或更新数据时不强制检查本列。也就是说,NOT ENFORCED 违反约束的数据也可以成功插入或修改;ENFORCED 违反约束的数据不能插入或修改,是默认值。

第二个选项是 ENABLE QUERY OPTIMIZATION,DB2 在对该表运行 SELECT 语句时使用它。指定该值时,DB2 将在查询 SQL 时使用约束中的信息。也就是说,当表中有违反约束时,若使用 约束字段 过滤数据时,当 ENABLE QUERY OPTIMIZATION 时,说明查询时受约束控制;当 DISABLE QUERY OPTIMIZATION 时,说明查询时不受约束控制。 另外,全表查询时,能够查出违反约束的数据。

2、使用 load 导入数据


aaa.del 文件内容:
1,2,3
4,5,6
7,8,13
导入语句:
load client from 'e:aaa.del' of del
replace into aaa
nonrecoverable
;
查询数据:
select *
from aaa
;
报错如下:
The table is in Check Pending state. The integrity of the table is not enforced and the content of the table may be invalid.

注:若在创建约束时,使用 NOT ENFORCED,则使用 LOAD 导入数据后,表状态是正常,不会处于 "设置完整性暂挂"状态。

alter table aaa
add constraint chk_a3 check(a_3 <=10) NOT ENFORCED ENABLE QUERY OPTIMIZATION
;

3、当表状态处于 "设置完整性暂挂"状态时,使用 SET INTEGRITY 有2种处理:一种是忽略约束,并在目的表中保留违反约束的数据;另一种是立即进行约束检查,并将违反约束的数据移入 异常表(在目标表的基础上增加两个字段,类型分别是 timestamp、 clob)。

(1)、忽略约束

set integrity
for aaa check immediate unchecked;

执行完成后,表状态变为正常,并且违反约束的数据仍然存在。

(2)、约束检查


--创建异常表
create table aaa_exp like aaa;
--异常表增加 时间 和 信息 字段
alter table aaa
add column tsm timestamp
add column msg clob
;
reorg table whdw.aaa;
runstats on table whdw.aaa and indexes all;
--执行约束检查
set integrity
for aaa immediate checked for exception in whdw.aaa use aaa_exp;
--查询目标表
select *
from aaa
;
--查询结果
A_1	A_2	A_3
1
2
3
4
5
6
--查询异常表
select *
from aaa_exp
;
--查询结果
A_1	A_2	A_3	TSM
MSG
7
8
13	2018/10/17 1:26:43	00001K00015A.AAA.CHK_A3

 

--完

最后

以上就是奋斗狗为你收集整理的DB2 INTEGRITY 完整性检查的全部内容,希望文章能够帮你解决DB2 INTEGRITY 完整性检查所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(30)

评论列表共有 0 条评论

立即
投稿
返回
顶部