`

触发器更新空间字段

阅读更多

因为要显示空间数据临时在表中增加的geoloc空间字段,但有不行修改程序,所以通过增加触发器实现

CREATE OR REPLACE TRIGGER lp_hiddanger_regist_TRIGGER
   AFTER INSERT OR UPDATE
   ON lp_hiddanger_regist
   REFERENCING OLD AS OLD
   FOR EACH ROW
BEGIN
   UPDATE   lp_hiddanger_regist
      SET   geoloc =
               MDSYS.SDO_GEOMETRY (2001,
                                   8307,
                                   NULL,
                                   MDSYS.SDO_ELEM_INFO_ARRAY (1, 1, 1),
                                   MDSYS.SDO_ORDINATE_ARRAY (x, y))
    WHERE   id = :OLD.id;
END;
 


像上面这样采用after insert or update 总是不能更新geoloc字段,后来因为出现了“发生了变化, 触发器/函数不能读它”这样的错误后在网上google了下 找到了learningaginlearnin 在论坛中发的帖子 ,然后将触发器改为了下面的方式。一切都ok了,在编译运行时有个异常,忽略所有的就可以了。

DROP TRIGGER hiddanger_UPDATE_GEOLOC;

CREATE OR REPLACE TRIGGER hiddanger_UPDATE_GEOLOC
   BEFORE INSERT
   ON lp_hiddanger_regist    FOR EACH ROW
BEGIN
   :new.geoloc :=
      MDSYS.SDO_GEOMETRY (2001,
                          8307,
                          NULL,
                          MDSYS.SDO_ELEM_INFO_ARRAY (1, 1, 1),
                          MDSYS.SDO_ORDINATE_ARRAY (:new.x, :new.y));
END hiddanger_UPDATE_GEOLOC;
/
 


遇到问题:

ORA-01747: user.table.column, table.column 或列说明无效

原因:

1表,或者表中的列无效,检查下表,列是否存在

2与ORACLE保留字有关 ,建表不能用oracle保留字

 

分享到:
评论

相关推荐

    达梦数据库_SQL语言手册

    使用触发器派生字段值 第章安全管理 创建角色语句 删除角色语句 授权语句数据库权限 授权语句对象权限 授权语句角色权限 回收权限语句数据库权限 回收权限语句对象权限 回收权限语句角色权限 策略与标记...

    数据库物理设计.pdf

    三、字段类型的选择 数据类型⼀⽅⾯影响数据存储空间的开销,另⼀⽅⾯也会影响数据查询性能。 当⼀个列可以选择多种数据类型时,应该优先选择数据类型,其次是⽇期或⼆进制类型,最后是字符类型。 对于相同级别的...

    关系型数据库性能体系设计和效率提升.docx

    7.17.2 用表更新表 26 7.17.3竖向显示变横向显示 26 7.18 完成事务及时commit 27 7.19数据库连接及时关闭 27 7.20 索引的使用 27 7.20.1避免在索引列上使用函数或运算 27 7.20.2避免改变索引列的类型 28 7.20.3避免...

    sql总结.doc

    (2)若视图的字段是来自库函数,则此视图不允许更新; (3)若视图的定义中有GROUP BY子句或聚集函数时,则此视图不允许更新; (4)若视图的定义中有DISTINCT任选项,则此视图不允许更新; (5)若视图的定义中有...

    数据库设计约定.pdf

    (2)必须使⽤UTF8字符集 解读:万国码,⽆需转码,⽆乱码风险,节省空间 (3)数据表、数据字段必须加⼊中⽂注释 解读:N年后谁tm知道这个r1,r2,r3字段是⼲嘛的 (4)禁⽌使⽤存储过程、视图、触发器、Event 解读:...

    数据库设计思想.docx

    当PK是字段名的组合时,建议字段的个数不要太多,多了不但索引占用空间大,而且速度也慢。 正确认识数据冗余 主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。非键字段的...

    常见oracle问题的总结

    10. 用什么语句查询字段呢? 11. 怎样得到触发器、过程、函数的创建脚本? 12. 怎样计算一个表占用的空间的大小? 13. 如何查看最大会话数? 15. 如何以archivelog的方式运行oracle。 76. 如何显示当前连接用户? ......

    ORCALE语句大全

    创建一个触发器 create trigger student_trigger before insert on student for each row when(new.SNo is null) begin select student_sequence.nextval into:new.SNo from dual;end;/ 最近插入一行数据 ...

    ORACLE应用常见傻瓜问题1000问

    11. 怎样得到触发器、过程、函数的创建脚本? 12. 怎样计算一个表占用的空间的大小? 13. 如何查看最大会话数? 14. 如何查看系统被锁的事务时间? 15. 如何以archivelog的方式运行oracle。 16. 怎幺获取有哪些用户...

    数据库设计规范.pdf

    2.7 适度使⽤视图,禁⽌使⽤存储过程、触发器和事件 使⽤视图⼀定程度上也是为了降低代码⾥SQL的复杂度,但有时候为了视图的通⽤性会损失性能(⽐如返回不必要的字段)。 存储过程(PROCEDURE)虽然可以简化业务端...

    SQLServer2005考试题及答案

    A、25M B、剩余占整个空间的25% C、已用空间占整个空间的25% D、以上都不对 6、你是一个保险公司的数据库开发人员,公司的保单信息存储在SQL Server 2000数据库中,你使用以下脚本建立了一个名为Policy的表: CREATE...

    数据库设计的黄金经验.txt

    通俗地理解三个范式,对于数据库设计大有...因为主键的作用,一是建主键索引,二是做为子表的外键,所以组合主键的字段个数少了,不仅节省了运行时间,而且节省了索引存储空间; (3) 一个表中的字段个数越少越好。只

    mysql数据库规范.docx

    具体内容 解释 基础规范 使用InnoDB存储引擎 支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高 新库使用utf8mb4字符集 万国码,无需转码,无乱码风险,节省空间 数据表、数据字段必须加入...

    ORACLE数据库智能化管理系统2012

    自由选择更新表数据方式,减少对数据库过多无关字段操作。 可根据查询结果自动生成IN、DECODE等多形式函数的参数,省去你查询手工输入上述函数多参数时的痛苦。 批量处理查询结果集中数据去除多余前后空格,增加对多...

    3数据库设计规范.doc

    逻辑结构对象:是指数据库对象的管理元素,包括数据库名称、表空间、表、字段/ 域、视图、索引、触发器、存储过程、函数、数据类型、数据库安全性相关的设计、数 据库配置有关的设计以及数据库中其他特性处理相关的...

    pgadmin教程-图解

    pgadmin教程-图解 pgAdmin能够检测到连接断开并且询问用户是否重新连接 对象浏览器,对象属性 服务器属性,数据库属性,数据表属性,约束属性,索引属性,触发器属性,函数属性,字段属性,表空间属性,模式属性

    Firebird数据库中文版

    我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。 扩展函数: 我们可以使用C语言,C++,DELPHI写UDF,使用UDF(用户定义...

    数据库设计规范(3).doc

    3 3.1 数据库命名规则 3 3.2 数据库对象命名的一般原则 3 3.3 表空间(Tablespace)命名规则 4 3.4 表(Table)命名规则 4 3.5 字段命名规则 4 3.6 视图(View)命名规则 4 3.7 序列(Sequence)命名规则 5 3.8 存储过程...

    oracle培训18天笔记

    从最基础的oracle的crud操作,oracle 基础, 包括SQLPLUS下的常用命令,ORACLE中字段的数据类型,建表,建约束,常用函数介绍,创建表空间、存储过程、触发器、游标使用等。

    oracle数据库经典题目

    22. 如果想查看视图中哪些字段是可以更新的,应当查询哪一个数据字典视图?( D ) A. DBA_VIEWS B. DBA_OBJECTS C. DBA_CLU_COLUMNS D. DBA_UPDATABLE_COLUMNS 23. 在下列各选项中,关于序列的描述哪一项是不正确的...

Global site tag (gtag.js) - Google Analytics