5

私は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
);

エラーの原因: user_sdo_geom_metadata ビューに、指定されたテーブルと列の値のペアのエントリが重複しています。

4

1 に答える 1

4

念のために言っておきますが、次は何を示していますか?

SELECT * FROM USER_SDO_GEOM_METADATA; 

ディクショナリ ビューのオブジェクト名は大文字で格納されます。したがって、空間メタデータから既存のエントリを削除する場合は、これを行う必要があります (大文字のテーブル名に注意してください)。

DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'COLA_MARKETS';
COMMIT;
于 2014-11-04T20:00:29.157 に答える