Таблица базы данных не имеет "индекса". Порядок строк таблицы не указан. Когда вы выполняете SELECT
без ORDER BY
, база данных может предоставить вам строку в любом порядке. Большинство баз данных SQL имеют тенденцию всегда давать вам один и тот же порядок, но это для их удобства , а не для вашего. В частности, SAP HANA имеет тенденцию быть очень капризным в этом отношении.
Но в таблицах базы данных есть первичный ключ. Первичный ключ можно рассматривать как уникальный идентификатор каждой строки таблицы. Итак, когда вы сделаете первичный ключ числом, вы можете довольно хорошо смоделировать индекс. Я предполагаю, что это предназначение поля «ID» в столбце вашей базы данных, и поэтому вы пометили его как «ключ» при определении своей базы данных.
INSERT добавляет новую строку, если не существует строки с такими же ключевыми значениями. Когда он уже есть, он не работает с sy-subr c = 4.
modifiedLine-id = 2.
INSERT ztabletest FROM modifiedLine.
UPDATE изменяет существующую строку таблицы с теми же ключевыми значениями. Если в таблице нет строки с этими значениями первичного ключа, выполняется ошибка sy-subr c = 4.
modifiedLine-id = 2.
UPDATE ztabletest FROM modifiedLine.
или альтернативный более «традиционный SQL» синтаксис с SET
и WHERE
:
UPDATE ztabletest
SET firstname = 'hey'
lastname = 'test'
WHERE id = 2
MODIFY - это комбинация INSERT и UPDATE (также известная как «upsert»). Он проверяет, есть ли уже линия. Когда он там, он модифицирует строку. Если это не так, он вставляет его.
modifiedLine-id = 2.
MODIFY ztabletest FROM modifiedLine.
Что в основном является сокращением для:
modifiedLine-id = 2.
UPDATE ztabletest FROM modifiedLine.
IF sy-subrc = 4.
INSERT ztabletest FROM modifiedLine.
ENDIF.