Bug: 数据库属性包含未设置的默认值

文章编号 : 33317
软件: ArcGIS - ArcInfo 9.2, 9.3 ArcSDE 9.0, 9.1, 9.2, 9.3, 9.3.1
操作系统: N/A
已邀请:

易智瑞技术支持

赞同来自:

错误信息:
因为在插入记录时,地理数据库将属性设置成NULL,所以即使某个DBMS包含了默认值,也不会将其赋给新插入的记录。 使用非版本控制类,可以定义表的属性的默认值。当应用程序向表中插入行使用 INSERT 语句未引用该属性时,数据库自动将属性的值设置为默认值。 因为Geodatabase是面向对象的应用,创建对象(行)时所有的值都进行了初始化。当对表进行插入值此(insert)操作时,属性为空值的设置为Null,属性不为空的获得初始化值以免违反 NOT NULL 约束。 Varchar类型的值定义为一个空的字符串,Integer类型的值定义为0。
原因: 当地理数据库为可为空的属性设置了NULL值,则DBMS期望属性值为NULL,因而不会赋予属性为默认值。

解决方法: 在插入操作过程中设置一个非 NULL 值的属性表上创建触发器。
以下是用于创建一个插入操作过程中设置属性值的插入触发器 Oracle 示例:
CREATE OR REPLACE TRIGGER before_insert_parcels
BEFORE INSERT ON parcels FOR EACH ROW
BEGIN
IF :NEW.appraisal_value IS NULL THEN
:NEW.appraisal_value := 0;
END IF;
END;
/
在往parcels表里面插入一行数据,appraisal_value值为null,在执行Insert操作之前,该触发器就自动的将appraisal_value的值设置为0


创建时间:2007-07-20
最近更新: 2009-12-23


原文链接
http://support.esrichina.com.cn/2007/0720/905.html

要回复问题请先登录注册