部署达梦数据库,使用dmini命令进行初始化时有许多可选参数,这些参数可以帮我们按照需求配置自己的数据库。
其中CASE_SENSITIVE(大小写敏感)的是一个非常重要的选项,配置失误可能会影响到后续数据的识别,且建库后无法修改;在这里单独描述一下。
CASE_SENSITIVE :指定对数据库中的字符比较时大小写是否敏感 值Y或1为敏感,N或0为不敏感。
--查询大小写是否敏感
select * from v$option where PARA_NAME='GLOBAL_STR_CASE_SENSITIVE';
--创建一个表并插入数据,表名t1和字段名id都用小写,并且分别插入大写和小写的a作为数据
create table t1(id varchar2);
insert into t1 values('a');
insert into t1 values('A');
commit;
当设置CASE_SENSITIVE=1即大小写敏感时
SQL> select * from v$option where PARA_NAME='GLOBAL_STR_CASE_SENSITIVE';
行号 PARA_NAME PARA_VALUE
---------- ------------------------- ----------
1 GLOBAL_STR_CASE_SENSITIVE 1
SQL> select * from v$option where PARA_NAME='global_str_case_sensitive';
未选定行 ##大小写敏感时用小写的参数名没有查到内容
select table_name from user_tables; ##表名和字段名创建时自动转成了大写
行号 TABLE_NAME
---------- ----------
1 T1
SQL> select id,id name from t1 where id='a'; ##表中的数据大小写是区分开来的
行号 ID NAME
---------- -- ----
1 a a
表名,字段名,字段别名都自动转成了大写
且查询表中的数据时严格区分大小写。
当设置CASE_SENSITIVE=0即大小写不敏感时
SQL> select * from v$option where PARA_NAME='GLOBAL_STR_CASE_SENSITIVE';
行号 PARA_NAME PARA_VALUE
---------- ------------------------- ----------
1 GLOBAL_STR_CASE_SENSITIVE 0
SQL> select * from v$option where PARA_NAME='global_str_case_sensitive';
行号 PARA_NAME PARA_VALUE
---------- ------------------------- ----------
1 GLOBAL_STR_CASE_SENSITIVE 0
SQL> select table_name from user_tables; ##表和字段名按创建时的大小写命名
行号 table_name
---------- ----------
1 t1
SQL> select id,id name from t1 where id='a'; ##表数据不区分大小写
行号 id name
---------- -- ----
1 a a
2 A A
表名,字段名,字段别名不会自动转成大写
且查询表中的数据时不区分大小写。
事件举例:
达梦A库:初始化为大小写敏感
执行:
create table test1 (c1 varchar2,unique(c1));
insert into table test1 values('ABCD');
insert into table test1 values('abcd');
commit
达梦B库:初始化大小写不敏感
将A库的test1表迁移到B库,看是否能成功迁移
文章
阅读量
获赞