在oracle中创建空间数据库时无法更新user_sdo_geom_metadata

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视图中的给定表和列值对存在重复条目.

Alb*_*ind 4

只是为了确定一下,以下内容显示了什么?

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)