`

触发器更新空间字段

阅读更多

因为要显示空间数据临时在表中增加的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保留字

 

分享到:
评论

相关推荐

    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交

    添加触发器(Trigger)是指在数据库表上添加一个触发器,以便在特定的操作(如插入、更新、删除)时执行特定的操作。在上面的示例代码中,添加了一个触发器 `Trigger_Car_GUID_Insert`,用于在插入数据到表 `Car` 时...

    oracle创建表,索引,表空间,触发器,schema用户,序列的Sql文

    例如,创建一个在插入新员工时自动更新时间戳的触发器: ```sql CREATE TRIGGER trg_employee_insert BEFORE INSERT ON Employees FOR EACH ROW BEGIN :NEW.LastUpdate := SYSDATE; END; ``` 这个触发器在...

    视图、索引、存储过程、触发器使用

    在给定文件中,为了维护`STUDENT`表和`CLASS`表之间的参照完整性,设计了三个触发器:一个用于检查插入或更新的`CLASS_ID`值是否存在,另一个用于同步`CLASS`表中`CLASS_ID`字段的更新,最后一个用于处理`CLASS`表中...

    连接两个属性表,修改源属性表中某字段的值,目标属性表对应字段的值自动修改

    这样,每次源属性表的特定字段更新,都会触发目标属性表的同步更新,实现了类似数据库触发器的功能,但无需依赖数据库引擎的特性。 此外,为了实现这一功能,开发者还需要熟悉SuperMap iObject .NET API,包括`...

    数据库设计包括表、视图、触发器、存储过程、序列、索引等.doc

    在数据库设计中,主要对象包括表、视图、触发器、存储过程、序列、索引等。这些对象都是数据库设计的核心组件,各自扮演着不同的角色,以下是对每个对象的详细解释: 1. 表(Table) 表是数据库中最基本的存储结构...

    创建监控表的DML的触发器-0422

    在此示例中,触发器会在`scott.schema`上的插入、更新或删除操作后触发。具体来说,当检测到插入操作时,触发器会收集相关信息并将其写入监控表`trig_sql`。 #### 总结 通过上述步骤,我们成功地设置了一个用于监控...

    基于Oracle触发器的ArcSDE数据库要素级监测.pdf

    1. **时间戳管理**:在每个要素属性表中增加一个时间戳字段,记录元素的创建或更新时间。这种方式简单直观,但仅能记录时间点,无法处理连续的时间序列数据。 在实际应用中,根据数据需求和系统架构,可以选择合适...

    Sql复杂查询、视图、触发器、索引.rar

    例如,你可以创建一个触发器,在插入新记录时自动更新某个汇总字段,或者在删除记录时记录操作日志。 **4. 索引** 索引是提高数据库查询性能的关键工具。它们创建在表的列上,类似于书籍的目录,使数据查找更快。B...

    Oracle数据库表建立字段唯一性的方法

    - 当尝试插入重复值时,可以使用`ON CONFLICT`子句来指定处理方式,但这在Oracle中通常需要结合触发器或存储过程来实现,因为Oracle本身并不直接支持此功能。 5. **使用复合唯一约束或索引** - 如果需要确保多个...

    mysql课件第四章索引、视图、触发器.ppt

    触发器是特殊的存储过程,它可以在特定的时刻自动执行,例如在插入、更新或删除数据时。 视图和触发器都是 MySQL 数据库中非常重要的概念,它们可以帮助开发者更方便地管理和维护数据。 MySQL 索引的分类包括: ...

    索引视图触发器PPT学习教案.pptx

    7. **空间索引**:使用`spatial`参数创建,专门用于空间数据类型。 创建索引的方法有两种: 1. 在创建表时指定:`CREATE TABLE ... [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY ...` 2. 对已存在的表添加索引:`CREATE ...

    SDE空间数据的检测

    ### SDE空间数据的检测——基于Oracle触发器的ArcSDE数据库要素级监测 #### 摘要 本文探讨了一种新型的监测方法,旨在解决ArcSDE数据库中GeoDatabase模型无法有效管理地理要素时间维度的问题。通过在底层Oracle...

    MySQLSQL高级特性字段约束-索引-视图-外键学习实践.rar

    5. **检查约束(CHECK)**:用于限制字段值的范围,但MySQL不直接支持,通常通过触发器实现。 ### 索引 索引是数据库管理系统中用于加速数据检索的数据结构。MySQL支持多种类型的索引: 1. **B-Tree索引**:最常用...

    达梦数据库_SQL语言手册

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

    查看表空间日期处理

    - 可以创建数据库触发器自动更新表中的时间戳字段,如记录的插入或更新时间,这有助于跟踪数据变化。 5. **备份和恢复策略**: - 时间相关的备份和恢复策略,比如基于时间点的恢复,可以帮助在特定日期恢复数据。...

    zabbix监控mysql表空间.pdf

    通过上述的知识点,我们可以了解到在监控MySQL数据库表空间时涉及的多个方面,包括直接查询、自定义监控脚本的编写和配置、监控项和触发器的设置、以及告警信息的获取和展示。这些操作帮助管理员确保Zabbix监控系统...

    【SQL-Server】实现批量查询数据库表所占空间.pdf

    总结来说,批量查询SQL Server数据库中表所占空间的关键在于创建一个触发器,这个触发器会在新表名插入辅助表时动态执行`sp_spaceused`。通过这种方法,可以有效地获取整个数据库中所有表的存储占用情况,从而便于...

    用oracleSpatial实现分布式空间数据传输.pdf

    文章还提到了元数据表的概念,其中存储了空间数据的关键信息,如数据表名称、空间字段名称、坐标范围等,使用户能够通过元数据视图访问Oracle Spatial中的空间数据信息。 通过以上知识点,我们可以总结出,本文主要...

Global site tag (gtag.js) - Google Analytics