解决方法: 在插入操作过程中设置一个非 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
1 个回复
易智瑞技术支持
赞同来自:
因为在插入记录时,地理数据库将属性设置成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
要回复问题请先登录或注册