当数据库对象中的表达式(包括检查约束、分段存储表达式、SPL 例程、触发器或 UDR)包含年份为 1 位或 2 位数字的字面日期值或 DATETIME 值时,数据库服务器将使用在创建(或上次修改)数据库对象时 DBCENTURY(和其他相关环境变量)所具有的设置对表达式求值。
如果 DBCENTURY 已重新设置为新值,那么在展开缩写年份时会忽略新值。
birthdate < '09/25/50'
表达式是根据定义约束时的 DBCENTURY 值解释的。如果包含 birthdate 列的表是在 09/23/2000 创建的且 DBCENTURY =C,那么在对 birthdate 列执行插入或更新操作时检查约束表达式始终解释为 birthdate < '09/25/1950'。即使用户对 birthdate 列执行插入或更新操作时对 DBCENTURY 设置了不同的值,约束表达式仍然根据定义(或上次修改)检查约束时的设置进行解释。
在一些较早版本的 GBase 8s 上创建的数据库对象不支持创建时设置的优先级。
重新定义这些对象之后,对象的表达式内的日期文字将根据创建或上次修改对象时的环境进行解释。否则,它们的行为将取决于运行时环境,如果环境更改,行为有可能变得不一致。
同时包含旧对象和新对象的数据库的管理可能会很复杂,这是因为对日期表达式求值的新旧行为之间存在差异。为避免这一情况,建议重新定义所有旧对象。