Oracle SQL: вставьте пространственные данные из более существующей таблицы - PullRequest
0 голосов
/ 06 декабря 2011

Я создал таблицу umriss, которую я заполнил данными, и мне все еще нужно вставить данные геометрии из существующих таблиц (usrdemo.glets_1850, usrdemo.glets_1973, ...). Как это работает?

umriss является «слабой сущностью» и имеет ссылки на таблицы gletscherstand (glst_id) и gletscher (gletscher_id)

create table umriss
(
    umr_nr number (4) not null,
    umr_datum date,
    GLST_ID number (4) not null,
    shape mdsys.sdo_geometry,
    GLETSCHER_ID number (3) not null,
    se_anno_cad_data blob
);

alter table umriss
add constraint umriss_glst_pk
primary key (umr_nr, GLST_ID, GLETSCHER_ID);

ALTER TABLE umriss 
ADD CONSTRAINT umriss_gletscherstand_fk 
FOREIGN KEY (GLST_ID, GLETSCHER_ID) 
REFERENCES GLETSCHERSTAND(GLST_ID, GLETSCHER_ID);

Я вручную вставил данные для атрибутов umr_nr, umr_datum, glst_id и gletscher_id. Как вы можете видеть из umr_nr, есть 3 фигуры, и теперь я хочу добавить пространственные данные из usrdemo_glets_1850, которые имеют 3 фигуры и атрибуты: objectid (= umr_nr в таблице umriss), shape и se_anno_cad_data.

Я пробовал это ...

INSERT INTO umriss u
(u.shape, u.se_anno_cad_data) 
SELECT usrdemo.glets_1850.shape, usrdemo.glets_1850.se_anno_cad_data
FROM usrdemo.glets_1850;

... и получил сообщение: Ora-01400 - невозможно вставить NULL в ... "umriss". "Umr_nr"

Как это работает?

1 Ответ

0 голосов
/ 06 декабря 2011

Вы пытались вставить новые записи в таблицу umriss без установки значений для столбца первичного ключа umr_nr.

Если я правильно понял, вы уже вручную вставили записи в таблицу umrissи теперь вам нужно только добавить дополнительные столбцы, тогда вместо этого следует использовать UPDATE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...