某些数据库的规则中,视空字符串''为有效的内容,但是 Oracle 和兼容 Oracle 的数据库会将''视作NULL。
以此为前置条件,使用信创数据库官方的迁移平台进行数据迁移,将某个有NOT NULL列且包含大量''的表迁移到信创数据库中,竟然能够顺利执行。落库后经过查询,发现''被转换成了一个没有内容、不是 NULL 、长度为 0 (正常情况下,NULL的长度为NULL)、显示为空、强转十六进制后显示为0x(即 RAW 值也为空)、无法通过任何 where 条件选中(IS NULL、=''等)的东西。
我们已知该数据库的 Oracle 兼容模式下将''等价为NULL,但是我可以在数据库里创建一个带有列COLNAME VARCHAR(n) NOT NULL DEFAULT ''的表。表现是如果进行INSERT不指定该列的值,直接出发违反约束的 ERROR 。
客户一直在进行信创数据库的 API 长期测试。信创数据库由内核软件提供一组 API ,再由管理平台对内核 API 进行二次封装。前阵子开发向技术支持反馈,有一个基础功能的 API 接口调用一直有问题,调用失败。客户、驻场 DBA 、技术支持上下游联合调试了两天,最后数据库那边的 Developer 发现,这个接口的定义和使用方法虽然写在了《 API 手册》中,但是数据库本身根本就没有实现,是个虚空接口。
[/ol]