Текущее время: Сб, июн 21 2025, 15:35

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Внешний ключ!?
СообщениеДобавлено: Пт, окт 01 2004, 11:56 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 31 2004, 09:03
Сообщения: 33
Всем драсти!
Вопрос может быть прост или я чего то не понимаю. :oops:
Создаю внешний ключ на таблицу. Почему при вводе некорректных данных в эту таблицу он не ругается по поводу не консистенции данных. Или это надо самому проверять, тогда на кой нужны внешние ключи?
Спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 12:00 
Гость
"ругается" через переменную SY-SUBRC

Если произошла попытка вставки/изменения записей в таблицу
с некорректными или дублирующими ключами,
то внешне произойдет только то, что записи не внесутся или неизменятся.
При этом SY-SUBRC будет отлична от ноля.

А для проверки полей по внешним ключам -
нужно определить кардинальность для поля,
например, как 1:CN


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения: Может какие патчи надо навесить?
СообщениеДобавлено: Пт, окт 01 2004, 12:23 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 31 2004, 09:03
Сообщения: 33
>"ругается" через переменную SY-SUBRC

это понятно, в эту переменную не ругается.

>Если произошла попытка вставки/изменения записей в таблицу
с некорректными или дублирующими ключами,
то внешне произойдет только то, что записи не внесутся или неизменятся.
При этом SY-SUBRC будет отлична от ноля.

речь идет о внешнем ключе, т.е. не о первичном. Вот именно, что при вставке не корректных значений ничего не происходит.

>А для проверки полей по внешним ключам -
нужно определить кардинальность для поля,
например, как 1:CN

это сделал, как надо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 14:18 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Консистентность БД по внешним ключам отслеживается только в логике программы. Ни о каких ошибках SAP сигнализировать не будет.
Кардинальность влияет только на отображение в диаграмме данных. Никакого иного смысла в рамках системы там нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 15:48 
Гость
правильно ли я понял, целостность по внешним ключам только декларируется :( , т.е. как таковой ее нет?


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, окт 01 2004, 20:23 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Не совсем правильно.
Консистентность данных отслеживается в полях ввода на экране, если Вы создали эти поля со ссылкой на словарь данных.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 04 2004, 08:15 
Гость
Да, внешний ключ объявленный в словаре данных не является настоящим ограничением ссылочной целостности, а влияет только на проверки пользовательского интерфейса.
Но хорошо хоть то, что ничто не мешает добавить ограничения на уровне БД самому - добавь сначала первичный или уникальный ключ в проверочную таблицу, а потом и сам внешний ключ, например:
Code:
alter table ZSPR add constraint PK_ZSPR PRIMARY KEY (MANDT,KEY1)
alter table ZTAB add constraint FK_ZTAB FOREIGN KEY (MANDT,FKEY) REFERENCES ZSPR(MANDT,KEY1)

Правда, в случае наружения ограничений будут вылетать дампы, но и это можно предусмотреть:
Code:
TABLES: ZTAB.
DATA: ex TYPE REF TO CX_SY_OPEN_SQL_DB.
...
TRY.
    insert ZTAB.
  CATCH CX_SY_OPEN_SQL_DB INTO ex.
* анализируем, если надо ex->SQLCODE.
ENDTRY.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 04 2004, 09:56 
Ассистент
Ассистент

Зарегистрирован:
Вт, авг 31 2004, 09:03
Сообщения: 33
Всем спасибо за ответы!


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB