use*_*081 5 oracle oracle-spatial oracle11g
我正在使用oracle 11g并尝试创建一个空间数据库,我只是从oracle文档中复制了示例代码,
但是当更新元数据部分时,它给出了重复的条目错误,我尝试了delete from user_sdo_geom_metadata
它并没有给出任何错误,然后再次尝试插入,仍然出现重复输入错误.我也试过select * from user_sdo_geom_metadata
但什么都没有.任何人都知道为什么?谢谢
示例代码:
CREATE TABLE cola_markets (
mkt_id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape SDO_GEOMETRY);
INSERT INTO cola_markets VALUES(
1,
'cola_a',
SDO_GEOMETRY(
2003, -- two-dimensional polygon
NULL,
NULL,
SDO_ELEM_INFO_ARRAY(1,1003,3), -- one rectangle (1003 = exterior)
SDO_ORDINATE_ARRAY(1,1, 5,7) -- only 2 points needed to
-- define rectangle (lower left and upper right) with
-- Cartesian-coordinate data
));
INSERT INTO user_sdo_geom_metadata
(TABLE_NAME,
COLUMN_NAME,
DIMINFO,
SRID)
VALUES (
'cola_markets',
'shape',
SDO_DIM_ARRAY( -- 20X20 grid
SDO_DIM_ELEMENT('X', 0, 20, 0.005),
SDO_DIM_ELEMENT('Y', 0, 20, 0.005)
),
NULL -- SRID
);
Run Code Online (Sandbox Code Playgroud)
错误原因:user_sdo_geom_metadata视图中的给定表和列值对存在重复条目.
只是为了确定一下,以下内容显示了什么?
SELECT * FROM USER_SDO_GEOM_METADATA;
Run Code Online (Sandbox Code Playgroud)
字典视图中的对象名称以大写形式存储。因此,如果您想从空间元数据中删除现有条目,您需要执行以下操作(注意大写的表名称):
DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'COLA_MARKETS';
COMMIT;
Run Code Online (Sandbox Code Playgroud)