因为要显示空间数据临时在表中增加的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保留字
分享到:
相关推荐
添加触发器(Trigger)是指在数据库表上添加一个触发器,以便在特定的操作(如插入、更新、删除)时执行特定的操作。在上面的示例代码中,添加了一个触发器 `Trigger_Car_GUID_Insert`,用于在插入数据到表 `Car` 时...
例如,创建一个在插入新员工时自动更新时间戳的触发器: ```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,包括`...
在数据库设计中,主要对象包括表、视图、触发器、存储过程、序列、索引等。这些对象都是数据库设计的核心组件,各自扮演着不同的角色,以下是对每个对象的详细解释: 1. 表(Table) 表是数据库中最基本的存储结构...
在此示例中,触发器会在`scott.schema`上的插入、更新或删除操作后触发。具体来说,当检测到插入操作时,触发器会收集相关信息并将其写入监控表`trig_sql`。 #### 总结 通过上述步骤,我们成功地设置了一个用于监控...
1. **时间戳管理**:在每个要素属性表中增加一个时间戳字段,记录元素的创建或更新时间。这种方式简单直观,但仅能记录时间点,无法处理连续的时间序列数据。 在实际应用中,根据数据需求和系统架构,可以选择合适...
例如,你可以创建一个触发器,在插入新记录时自动更新某个汇总字段,或者在删除记录时记录操作日志。 **4. 索引** 索引是提高数据库查询性能的关键工具。它们创建在表的列上,类似于书籍的目录,使数据查找更快。B...
- 当尝试插入重复值时,可以使用`ON CONFLICT`子句来指定处理方式,但这在Oracle中通常需要结合触发器或存储过程来实现,因为Oracle本身并不直接支持此功能。 5. **使用复合唯一约束或索引** - 如果需要确保多个...
触发器是特殊的存储过程,它可以在特定的时刻自动执行,例如在插入、更新或删除数据时。 视图和触发器都是 MySQL 数据库中非常重要的概念,它们可以帮助开发者更方便地管理和维护数据。 MySQL 索引的分类包括: ...
7. **空间索引**:使用`spatial`参数创建,专门用于空间数据类型。 创建索引的方法有两种: 1. 在创建表时指定:`CREATE TABLE ... [UNIQUE|FULLTEXT|SPATIAL] INDEX|KEY ...` 2. 对已存在的表添加索引:`CREATE ...
### SDE空间数据的检测——基于Oracle触发器的ArcSDE数据库要素级监测 #### 摘要 本文探讨了一种新型的监测方法,旨在解决ArcSDE数据库中GeoDatabase模型无法有效管理地理要素时间维度的问题。通过在底层Oracle...
5. **检查约束(CHECK)**:用于限制字段值的范围,但MySQL不直接支持,通常通过触发器实现。 ### 索引 索引是数据库管理系统中用于加速数据检索的数据结构。MySQL支持多种类型的索引: 1. **B-Tree索引**:最常用...
使用触发器派生字段值 第章安全管理 创建角色语句 删除角色语句 授权语句数据库权限 授权语句对象权限 授权语句角色权限 回收权限语句数据库权限 回收权限语句对象权限 回收权限语句角色权限 策略与标记...
- 可以创建数据库触发器自动更新表中的时间戳字段,如记录的插入或更新时间,这有助于跟踪数据变化。 5. **备份和恢复策略**: - 时间相关的备份和恢复策略,比如基于时间点的恢复,可以帮助在特定日期恢复数据。...
通过上述的知识点,我们可以了解到在监控MySQL数据库表空间时涉及的多个方面,包括直接查询、自定义监控脚本的编写和配置、监控项和触发器的设置、以及告警信息的获取和展示。这些操作帮助管理员确保Zabbix监控系统...
总结来说,批量查询SQL Server数据库中表所占空间的关键在于创建一个触发器,这个触发器会在新表名插入辅助表时动态执行`sp_spaceused`。通过这种方法,可以有效地获取整个数据库中所有表的存储占用情况,从而便于...
文章还提到了元数据表的概念,其中存储了空间数据的关键信息,如数据表名称、空间字段名称、坐标范围等,使用户能够通过元数据视图访问Oracle Spatial中的空间数据信息。 通过以上知识点,我们可以总结出,本文主要...